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