Enlightenment CVS committal

Author  : kwo
Project : e16
Module  : e

Dir     : e16/e/src


Modified Files:
        E.h ecompmgr.c ecompmgr.h eobj.c ewins.c 


Log Message:
Repaint shadow regions on stacking change.
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/E.h,v
retrieving revision 1.422
retrieving revision 1.423
diff -u -3 -r1.422 -r1.423
--- E.h 7 May 2005 11:19:53 -0000       1.422
+++ E.h 8 May 2005 09:52:25 -0000       1.423
@@ -561,6 +561,8 @@
 #define EoResize(eo, w, h)              EobjResize(&((eo)->o), w, h)
 #define EoMoveResize(eo, x, y, w, h)    EobjMoveResize(&((eo)->o), x, y, w, h)
 #define EoReparent(eo, d, x, y)         EobjReparent(&((eo)->o), d, x, y)
+#define EoRaise(eo)                     EobjRaise(&((eo)->o))
+#define EoLower(eo)                     EobjLower(&((eo)->o))
 #define EoChangeShape(eo)               EobjChangeShape(&((eo)->o))
 
 typedef struct
@@ -1542,6 +1544,8 @@
 void                EobjResize(EObj * eo, int w, int h);
 void                EobjMoveResize(EObj * eo, int x, int y, int w, int h);
 void                EobjReparent(EObj * eo, int desk, int x, int y);
+int                 EobjRaise(EObj * eo);
+int                 EobjLower(EObj * eo);
 void                EobjChangeShape(EObj * eo);
 
 #if USE_COMPOSITE
@@ -2164,8 +2168,6 @@
 EWin               *EwinListStackGetTop(void);
 
 #define EwinListGetAll EwinListStackGet
-#define EwinListStackRaise(ewin) EobjListStackRaise(&(ewin->o))
-#define EwinListStackLower(ewin) EobjListStackLower(&(ewin->o))
 #define EwinListFocusRaise(ewin) EobjListFocusRaise(&(ewin->o))
 #define EwinListFocusLower(ewin) EobjListFocusLower(&(ewin->o))
 
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/ecompmgr.c,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -3 -r1.27 -r1.28
--- ecompmgr.c  3 May 2005 18:21:39 -0000       1.27
+++ ecompmgr.c  8 May 2005 09:52:26 -0000       1.28
@@ -1124,17 +1124,7 @@
    cw->opacity = 0xdeadbeef;
    ECompMgrWinChangeOpacity(eo, eo->opacity);
 
-#if 0                          /* FIXME - Do we need this? */
-   /* Find new window region */
-   cw->extents = win_extents(disp, eo);
-#endif
-
    EventCallbackRegister(eo->win, 0, ECompMgrHandleWindowEvent, eo);
-
-#if 0                          /* FIXME - Not necessary? */
-   if (cw->a.map_state == IsViewable)
-      ECompMgrWinMap(eo, cw->damage_sequence - 1, False);
-#endif
 }
 
 void
@@ -1259,6 +1249,18 @@
    ECompMgrWinInvalidate(eo, INV_SIZE);
 }
 
+void
+ECompMgrWinChangeStacking(EObj * eo)
+{
+   ECmWinInfo         *cw = eo->cmhook;
+
+   if (Conf_compmgr.shadow == ECM_SHADOWS_OFF)
+      return;
+
+   if (cw->extents != None)
+      ECompMgrDamageMerge(eo->desk, cw->extents, 0);
+}
+
 static void
 finish_destroy_win(EObj * eo, Bool gone)
 {
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/ecompmgr.h,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -3 -r1.12 -r1.13
--- ecompmgr.h  3 May 2005 18:25:46 -0000       1.12
+++ ecompmgr.h  8 May 2005 09:52:26 -0000       1.13
@@ -42,6 +42,7 @@
 void                ECompMgrWinMoveResize(EObj * eo, int change_xy,
                                          int change_wh, int change_bw);
 void                ECompMgrWinReparent(EObj * eo, int desk, int change_xy);
+void                ECompMgrWinChangeStacking(EObj * eo);
 void                ECompMgrWinChangeShape(EObj * eo);
 
 void                ECompMgrWinChangeOpacity(EObj * eo, unsigned int opacity);
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/eobj.c,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -3 -r1.27 -r1.28
--- eobj.c      7 May 2005 11:19:57 -0000       1.27
+++ eobj.c      8 May 2005 09:52:26 -0000       1.28
@@ -110,7 +110,7 @@
       eo->ilayer &= ~512;
 
    if (eo->ilayer != ilayer)
-      EobjListStackRaise(eo);
+      EobjRaise(eo);
 }
 
 void
@@ -375,6 +375,36 @@
    EobjSetDesk(eo, desk);
 }
 
+int
+EobjRaise(EObj * eo)
+{
+   int                 num;
+
+   num = EobjListStackRaise(eo);
+   if (num == 0)
+      return num;
+#if USE_COMPOSITE
+   if (eo->shown && eo->cmhook)
+      ECompMgrWinChangeStacking(eo);
+#endif
+   return num;
+}
+
+int
+EobjLower(EObj * eo)
+{
+   int                 num;
+
+   num = EobjListStackLower(eo);
+   if (num == 0)
+      return num;
+#if USE_COMPOSITE
+   if (eo->shown && eo->cmhook)
+      ECompMgrWinChangeStacking(eo);
+#endif
+   return num;
+}
+
 void
 EobjChangeShape(EObj * eo)
 {
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/ewins.c,v
retrieving revision 1.57
retrieving revision 1.58
diff -u -3 -r1.57 -r1.58
--- ewins.c     7 May 2005 11:19:57 -0000       1.57
+++ ewins.c     8 May 2005 09:52:26 -0000       1.58
@@ -1303,33 +1303,34 @@
    EWin              **lst;
    int                 i, num;
 
+   if (EoGetWin(ewin) == None)
+      return;
+
    if (call_depth > 256)
       return;
    call_depth++;
 
+   num = EoRaise(ewin);
+
    if (EventDebug(EDBUG_TYPE_RAISELOWER))
-      Eprintf("RaiseEwin(%d) %#lx %s\n", call_depth, ewin->client.win,
-             EwinGetName(ewin));
+      Eprintf("RaiseEwin(%d) %#lx %s n=%d\n", call_depth, ewin->client.win,
+             EwinGetName(ewin), num);
 
-   if (EoGetWin(ewin))
-     {
-       num = EwinListStackRaise(ewin);
-       if (num == 0)           /* Quit if stacking is unchanged */
-          goto done;
-
-       lst = EwinListTransients(ewin, &num, 1);
-       for (i = 0; i < num; i++)
-          RaiseEwin(lst[i]);
-       if (lst)
-          Efree(lst);
+   if (num == 0)               /* Quit if stacking is unchanged */
+      goto done;
 
-       if (call_depth == 1)
-         {
-            if (num > 0)
-               StackDesktop(EoGetDesk(ewin));  /* Do the full stacking */
-            else
-               RestackEwin(ewin);      /* Restack this one only */
-         }
+   lst = EwinListTransients(ewin, &num, 1);
+   for (i = 0; i < num; i++)
+      RaiseEwin(lst[i]);
+   if (lst)
+      Efree(lst);
+
+   if (call_depth == 1)
+     {
+       if (num > 0)
+          StackDesktop(EoGetDesk(ewin));       /* Do the full stacking */
+       else
+          RestackEwin(ewin);   /* Restack this one only */
      }
 
  done:
@@ -1343,33 +1344,34 @@
    EWin              **lst;
    int                 i, num;
 
+   if (EoGetWin(ewin) == None)
+      return;
+
    if (call_depth > 256)
       return;
    call_depth++;
 
+   num = EoLower(ewin);
+
    if (EventDebug(EDBUG_TYPE_RAISELOWER))
-      Eprintf("LowerEwin(%d) %#lx %s\n", call_depth, ewin->client.win,
-             EwinGetName(ewin));
+      Eprintf("LowerEwin(%d) %#lx %s n=%d\n", call_depth, ewin->client.win,
+             EwinGetName(ewin), num);
 
-   if (EoGetWin(ewin))
-     {
-       num = EwinListStackLower(ewin);
-       if (num == 0)           /* Quit if stacking is unchanged */
-          goto done;
-
-       lst = EwinListTransientFor(ewin, &num);
-       for (i = 0; i < num; i++)
-          LowerEwin(lst[i]);
-       if (lst)
-          Efree(lst);
+   if (num == 0)               /* Quit if stacking is unchanged */
+      goto done;
 
-       if (call_depth == 1)
-         {
-            if (num > 0)
-               StackDesktop(EoGetDesk(ewin));  /* Do the full stacking */
-            else
-               RestackEwin(ewin);      /* Restack this one only */
-         }
+   lst = EwinListTransientFor(ewin, &num);
+   for (i = 0; i < num; i++)
+      LowerEwin(lst[i]);
+   if (lst)
+      Efree(lst);
+
+   if (call_depth == 1)
+     {
+       if (num > 0)
+          StackDesktop(EoGetDesk(ewin));       /* Do the full stacking */
+       else
+          RestackEwin(ewin);   /* Restack this one only */
      }
 
  done:




-------------------------------------------------------
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