Enlightenment CVS committal

Author  : kwo
Project : e16
Module  : e

Dir     : e16/e/src


Modified Files:
        E.h ewins.c x.c 


Log Message:
Initial ARGB client support (Rajsekar Manokaran).
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/E.h,v
retrieving revision 1.414
retrieving revision 1.415
diff -u -3 -r1.414 -r1.415
--- E.h 25 Apr 2005 22:07:34 -0000      1.414
+++ E.h 29 Apr 2005 17:37:29 -0000      1.415
@@ -2263,6 +2263,9 @@
 
 Window              ECreateWindow(Window parent, int x, int y, int w, int h,
                                  int saveunder);
+Window              ECreateVisualWindow(Window parent, int x, int y, int w,
+                                       int h, int saveunder,
+                                       XWindowAttributes * child_attr);
 Window              ECreateEventWindow(Window parent, int x, int y, int w,
                                       int h);
 Window              ECreateFocusWindow(Window parent, int x, int y, int w,
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/ewins.c,v
retrieving revision 1.49
retrieving revision 1.50
diff -u -3 -r1.49 -r1.50
--- ewins.c     28 Apr 2005 22:11:21 -0000      1.49
+++ ewins.c     29 Apr 2005 17:37:29 -0000      1.50
@@ -66,7 +66,10 @@
    EWin               *ewin;
    XSetWindowAttributes att;
    Window              frame;
+   int                 require_argb;
+   XWindowAttributes   win_attr;
 
+   require_argb = 0;
    ewin = Ecalloc(1, sizeof(EWin));
 
    ewin->type = type;
@@ -107,7 +110,18 @@
 
    ewin->ewmh.opacity = 0;     /* If 0, ignore */
 
-   frame = ECreateWindow(VRoot.win, -10, -10, 1, 1, 1);
+   {
+      Status              s = XGetWindowAttributes(disp, win, &win_attr);
+
+      if (s != BadDrawable && s != BadWindow && win_attr.depth == 32)
+       {
+          frame = ECreateVisualWindow(VRoot.win, -10, -10, 1, 1, 1, &win_attr);
+          require_argb = 1;
+       }
+      else
+        frame = ECreateWindow(VRoot.win, -10, -10, 1, 1, 1);
+   }
+
    ewin->o.stacked = -1;       /* Not placed on desk yet */
    EobjInit(&ewin->o, EOBJ_TYPE_EWIN, frame, -10, -10, -1, -1, NULL);
    EoSetDesk(ewin, DesksGetCurrent());
@@ -115,7 +129,11 @@
    EoSetShadow(ewin, 1);
    EobjListFocusAdd(&ewin->o, 0);
 
-   ewin->win_container = ECreateWindow(EoGetWin(ewin), 0, 0, 1, 1, 0);
+   if (require_argb)
+      ewin->win_container =
+        ECreateVisualWindow(EoGetWin(ewin), 0, 0, 1, 1, 0, &win_attr);
+   else
+      ewin->win_container = ECreateWindow(EoGetWin(ewin), 0, 0, 1, 1, 0);
    att.event_mask = EWIN_CONTAINER_EVENT_MASK;
    att.do_not_propagate_mask = ButtonPressMask | ButtonReleaseMask;
    EChangeWindowAttributes(ewin->win_container,
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/x.c,v
retrieving revision 1.84
retrieving revision 1.85
diff -u -3 -r1.84 -r1.85
--- x.c 23 Apr 2005 08:28:04 -0000      1.84
+++ x.c 29 Apr 2005 17:37:30 -0000      1.85
@@ -266,7 +266,36 @@
    else
       attr.save_under = False;
    win = XCreateWindow(disp, parent, x, y, w, h, 0,
-                      CopyFromParent, InputOutput, CopyFromParent,
+                      VRoot.depth, InputOutput, VRoot.vis,
+                      CWOverrideRedirect | CWSaveUnder | CWBackingStore |
+                      CWColormap | CWBackPixmap | CWBorderPixel, &attr);
+   EXidSet(win, parent, x, y, w, h, VRoot.depth);
+
+   return win;
+}
+
+/* Creates a window, but takes the visual, depth and the colormap from c_attr. 
*/
+Window
+ECreateVisualWindow(Window parent, int x, int y, int w, int h, int saveunder,
+                   XWindowAttributes * c_attr)
+{
+   Window              win;
+   XSetWindowAttributes attr;
+
+   attr.backing_store = NotUseful;
+   attr.override_redirect = True;
+   attr.border_pixel = 0;
+   attr.colormap = c_attr->colormap;
+/*   attr.background_pixel = 0; */
+   attr.background_pixmap = None;
+   if ((saveunder == 1) && (Conf.save_under))
+      attr.save_under = True;
+   else if (saveunder == 2)
+      attr.save_under = True;
+   else
+      attr.save_under = False;
+   win = XCreateWindow(disp, parent, x, y, w, h, 0,
+                      c_attr->depth, InputOutput, c_attr->visual,
                       CWOverrideRedirect | CWSaveUnder | CWBackingStore |
                       CWColormap | CWBackPixmap | CWBorderPixel, &attr);
    EXidSet(win, parent, x, y, w, h, VRoot.depth);




-------------------------------------------------------
This SF.Net email is sponsored by: NEC IT Guy Games.
Get your fingers limbered up and give it your best shot. 4 great events, 4
opportunities to win big! Highest score wins.NEC IT Guy Games. Play to
win an NEC 61 plasma display. Visit http://www.necitguy.com/?r=20
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to