Enlightenment CVS committal

Author  : kwo
Project : e16
Module  : e

Dir     : e16/e/src


Modified Files:
        eobj.c eobj.h ewins.c ipc.c warp.c x.c xwin.h 


Log Message:
Track top-level window shepedness.
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/eobj.c,v
retrieving revision 1.63
retrieving revision 1.64
diff -u -3 -r1.63 -r1.64
--- eobj.c      14 Jan 2006 14:30:51 -0000      1.63
+++ eobj.c      22 Jan 2006 18:25:39 -0000      1.64
@@ -112,6 +112,7 @@
    EobjSetLayer(eo, eo->layer);
 }
 
+#if 1                          /* FIXME - Remove */
 int
 EobjIsShaped(const EObj * eo)
 {
@@ -123,6 +124,7 @@
        return ((EWin *) eo)->state.shaped;
      }
 }
+#endif
 
 void
 EobjInit(EObj * eo, int type, Window win, int x, int y, int w, int h,
@@ -148,6 +150,7 @@
    eo->y = y;
    eo->w = w;
    eo->h = h;
+   eo->shaped = -1;
 
    if (type == EOBJ_TYPE_EXT)
       eo->name = ecore_x_icccm_title_get(win);
@@ -277,6 +280,7 @@
 #if 1                          /* FIXME - TBD */
    if (type == EOBJ_TYPE_EXT)
      {
+       eo->shaped = 0;         /* FIXME - Assume unshaped for now */
        EobjSetFloating(eo, 1);
        EobjSetLayer(eo, 4);
      }
@@ -311,6 +315,9 @@
    if (eo->stacked <= 0 || raise > 1)
       DeskRestack(eo->desk);
 
+   if (eo->shaped < 0)
+      EobjShapeUpdate(eo, 0);
+
    EMapWindow(eo->win);
 #if USE_COMPOSITE
    ECompMgrWinMap(eo);
@@ -442,13 +449,22 @@
 }
 
 void
-EobjChangeShape(EObj * eo)
+EobjShapeUpdate(EObj * eo, int propagate)
 {
+   int                 was_shaped = eo->shaped;
+
+   if (propagate)
+      eo->shaped = EShapePropagate(eo->win) != 0;
 #if USE_COMPOSITE
+   else
+      eo->shaped = EShapeCheck(eo->win) != 0;
+
+   if (was_shaped <= 0 && eo->shaped <= 0)
+      return;
+
+   /* Shape may still be unchanged. Well ... */
    if (eo->shown && eo->cmhook)
       ECompMgrWinChangeShape(eo);
-#else
-   eo = NULL;
 #endif
 }
 
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/eobj.h,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -3 -r1.22 -r1.23
--- eobj.h      14 Jan 2006 14:30:51 -0000      1.22
+++ eobj.h      22 Jan 2006 18:25:39 -0000      1.23
@@ -37,6 +37,7 @@
    int                 x, y;
    int                 w, h;
    signed char         stacked;
+   signed char         shaped;
    char                sticky;
    char                floating;
    unsigned            external:1;
@@ -119,7 +120,7 @@
 #define EoReparent(eo, d, x, y)         EobjReparent(EoObj(eo), d, x, y)
 #define EoRaise(eo)                     EobjRaise(EoObj(eo))
 #define EoLower(eo)                     EobjLower(EoObj(eo))
-#define EoChangeShape(eo)               EobjChangeShape(EoObj(eo))
+#define EoShapeUpdate(eo, p)            EobjShapeUpdate(EoObj(eo), p)
 
 /* eobj.c */
 void                EobjInit(EObj * eo, int type, Window win, int x, int y,
@@ -143,7 +144,7 @@
 void                EobjReparent(EObj * eo, EObj * dst, int x, int y);
 int                 EobjRaise(EObj * eo);
 int                 EobjLower(EObj * eo);
-void                EobjChangeShape(EObj * eo);
+void                EobjShapeUpdate(EObj * eo, int propagate);
 void                EobjsRepaint(void);
 Pixmap              EobjGetPixmap(const EObj * eo);
 void                EobjChangeOpacity(EObj * eo, unsigned int opacity);
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/ewins.c,v
retrieving revision 1.141
retrieving revision 1.142
diff -u -3 -r1.141 -r1.142
--- ewins.c     22 Jan 2006 18:12:03 -0000      1.141
+++ ewins.c     22 Jan 2006 18:25:39 -0000      1.142
@@ -640,8 +640,7 @@
       Eprintf("EwinPropagateShapes %#lx frame=%#lx shaped=%d\n",
              _EwinGetClientXwin(ewin), EoGetWin(ewin), ewin->state.shaped);
 
-   EShapePropagate(EoGetWin(ewin));
-   EoChangeShape(ewin);
+   EoShapeUpdate(ewin, 1);
    ewin->update.shape = 0;
 }
 
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/ipc.c,v
retrieving revision 1.252
retrieving revision 1.253
diff -u -3 -r1.252 -r1.253
--- ipc.c       7 Jan 2006 07:20:58 -0000       1.252
+++ ipc.c       22 Jan 2006 18:25:40 -0000      1.253
@@ -1061,19 +1061,21 @@
 
    lst = EobjListStackGet(&num);
 
-   IpcPrintf("Num    window T V  D S F   L     pos       size    C R Name\n");
+   IpcPrintf
+      ("Num    window T V Sh  Dsk S  F   L     pos       size    C R Name\n");
    for (i = 0; i < num; i++)
      {
        eo = lst[i];
-       IpcPrintf(" %2d %#9lx %d %d %2d %d %d %3d %5d,%5d %4dx%4d %d %d %s\n",
-                 i, eo->win, eo->type, eo->shown, eo->desk->num, eo->sticky,
-                 eo->floating, eo->ilayer, eo->x, eo->y, eo->w, eo->h,
+       IpcPrintf
+          (" %2d %#9lx %d %d %2d  %3d %d  %d %3d %5d,%5d %4dx%4d %d %d %s\n",
+           i, eo->win, eo->type, eo->shown, eo->shaped, eo->desk->num,
+           eo->sticky, eo->floating, eo->ilayer, eo->x, eo->y, eo->w, eo->h,
 #if USE_COMPOSITE
-                 (eo->cmhook) ? 1 : 0, !eo->noredir
+           (eo->cmhook) ? 1 : 0, !eo->noredir
 #else
-                 0, 0
+           0, 0
 #endif
-                 , eo->name);
+           , eo->name);
      }
 }
 
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/warp.c,v
retrieving revision 1.84
retrieving revision 1.85
diff -u -3 -r1.84 -r1.85
--- warp.c      7 Jan 2006 07:20:58 -0000       1.84
+++ warp.c      22 Jan 2006 18:25:41 -0000      1.85
@@ -242,8 +242,7 @@
      }
 
    /* FIXME - Check shape */
-   EShapePropagate(EoGetWin(fw));
-   EoChangeShape(fw);
+   EoShapeUpdate(fw, 1);
 }
 
 static void
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/x.c,v
retrieving revision 1.116
retrieving revision 1.117
diff -u -3 -r1.116 -r1.117
--- x.c 7 Jan 2006 08:53:15 -0000       1.116
+++ x.c 22 Jan 2006 18:25:41 -0000      1.117
@@ -1147,7 +1147,7 @@
    return rn != 0;
 }
 
-static void
+static int
 ExShapePropagate(EXID * xid)
 {
    EXID               *xch;
@@ -1159,7 +1159,7 @@
    XWindowAttributes   att;
 
    if (!xid || xid->w <= 0 || xid->h <= 0)
-      return;
+      return 0;
 
 #if DEBUG_SHAPE_PROPAGATE
    Eprintf("ExShapePropagate %#lx %d,%d %dx%d\n", win, xid->x, xid->y, xid->w,
@@ -1168,7 +1168,7 @@
 
    XQueryTree(disp, xid->win, &rt, &par, &list, &num);
    if (!list)
-      return;
+      return 0;
 
    num_rects = 0;
    rects = NULL;
@@ -1251,6 +1251,8 @@
        ExShapeCombineRectangles(xid, ShapeBounding, 0, 0, NULL, 0, ShapeSet,
                                 Unsorted);
      }
+
+   return xid->num_rect;
 }
 
 void
@@ -1304,13 +1306,24 @@
    return ExShapeCopy(xdst, xsrc);
 }
 
-void
+int
 EShapePropagate(Window win)
 {
    EXID               *xid;
 
    xid = EXidFind(win);
-   ExShapePropagate(xid);
+
+   return ExShapePropagate(xid);
+}
+
+int
+EShapeCheck(Window win)
+{
+   EXID               *xid;
+
+   xid = EXidFind(win);
+
+   return xid->num_rect;
 }
 
 Pixmap
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/xwin.h,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -3 -r1.9 -r1.10
--- xwin.h      7 Jan 2006 07:20:58 -0000       1.9
+++ xwin.h      22 Jan 2006 18:25:41 -0000      1.10
@@ -104,7 +104,8 @@
 XRectangle         *EShapeGetRectangles(Window win, int dest, int *rn,
                                        int *ord);
 int                 EShapeCopy(Window dst, Window src);
-void                EShapePropagate(Window win);
+int                 EShapePropagate(Window win);
+int                 EShapeCheck(Window win);
 Pixmap              EWindowGetShapePixmap(Window win);
 
 #define ECreatePixmap(draw, w, h, depth) XCreatePixmap(disp, draw, w, h, depth)




-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems?  Stop!  Download the new AJAX search engine that makes
searching your log files as easy as surfing the  web.  DOWNLOAD SPLUNK!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=103432&bid=230486&dat=121642
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to