Enlightenment CVS committal Author : kwo Project : e16 Module : e
Dir : e16/e/src Modified Files: E.h buttons.c eobj.c ewin-ops.c slideout.c Log Message: Fix slideouts with composite. =================================================================== RCS file: /cvsroot/enlightenment/e16/e/src/E.h,v retrieving revision 1.451 retrieving revision 1.452 diff -u -3 -r1.451 -r1.452 --- E.h 11 Jun 2005 13:00:22 -0000 1.451 +++ E.h 12 Jun 2005 07:02:01 -0000 1.452 @@ -515,6 +515,7 @@ #define EOBJ_TYPE_EVENT 4 #define EOBJ_TYPE_EXT 5 +#define EoObj(eo) (&((eo)->o)) #define EoGetWin(eo) ((eo)->o.win) #define EoGetName(eo) ((eo)->o.name) #define EoGetType(eo) ((eo)->o.type) @@ -527,17 +528,17 @@ #define EoIsShown(eo) ((eo)->o.shown) #define EoGetDesk(eo) ((eo)->o.desk) #define EoGetLayer(eo) ((eo)->o.layer) -#define EoGetPixmap(eo) EobjGetPixmap(&((eo)->o)) +#define EoGetPixmap(eo) EobjGetPixmap(EoObj(eo)) #define EoSetName(eo, _x) (eo)->o.name = (_x) #define EoSetSticky(eo, _x) (eo)->o.sticky = ((_x)?1:0) -#define EoSetFloating(eo, _f) EobjSetFloating(&((eo)->o), (_f)) -#define EoSetDesk(eo, _d) EobjSetDesk(&((eo)->o), (_d)) -#define EoSetLayer(eo, _l) EobjSetLayer(&((eo)->o), (_l)) +#define EoSetFloating(eo, _f) EobjSetFloating(EoObj(eo), (_f)) +#define EoSetDesk(eo, _d) EobjSetDesk(EoObj(eo), (_d)) +#define EoSetLayer(eo, _l) EobjSetLayer(EoObj(eo), (_l)) #if USE_COMPOSITE #define EoSetOpacity(eo, _o) (eo)->o.opacity = (_o) #define EoGetOpacity(eo) ((eo)->o.opacity) -#define EoChangeOpacity(eo, _o) EobjChangeOpacity(&((eo)->o), _o) +#define EoChangeOpacity(eo, _o) EobjChangeOpacity(EoObj(eo), _o) #define EoSetShadow(eo, _x) (eo)->o.shadow = (_x) #define EoGetShadow(eo) ((eo)->o.shadow) #else @@ -547,15 +548,15 @@ #define EoGetShadow(eo) 0 #endif -#define EoMap(eo, raise) EobjMap(&((eo)->o), raise) -#define EoUnmap(eo) EobjUnmap(&((eo)->o)) -#define EoMove(eo, x, y) EobjMove(&((eo)->o), x, y) -#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)) +#define EoMap(eo, raise) EobjMap(EoObj(eo), raise) +#define EoUnmap(eo) EobjUnmap(EoObj(eo)) +#define EoMove(eo, x, y) EobjMove(EoObj(eo), x, y) +#define EoResize(eo, w, h) EobjResize(EoObj(eo), w, h) +#define EoMoveResize(eo, x, y, w, h) EobjMoveResize(EoObj(eo), x, y, w, h) +#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)) typedef struct { @@ -1505,7 +1506,7 @@ void EobjMove(EObj * eo, int x, int y); 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); +void EobjReparent(EObj * eo, EObj * dst, int x, int y); int EobjRaise(EObj * eo); int EobjLower(EObj * eo); void EobjChangeShape(EObj * eo); @@ -2133,8 +2134,8 @@ EWin *EwinListStackGetTop(void); #define EwinListGetAll EwinListStackGet -#define EwinListFocusRaise(ewin) EobjListFocusRaise(&(ewin->o)) -#define EwinListFocusLower(ewin) EobjListFocusLower(&(ewin->o)) +#define EwinListFocusRaise(ewin) EobjListFocusRaise(EoObj(ewin)) +#define EwinListFocusLower(ewin) EobjListFocusLower(EoObj(ewin)) /* startup.c */ void StartupWindowsCreate(void); =================================================================== RCS file: /cvsroot/enlightenment/e16/e/src/buttons.c,v retrieving revision 1.64 retrieving revision 1.65 diff -u -3 -r1.64 -r1.65 --- buttons.c 9 Jun 2005 18:28:10 -0000 1.64 +++ buttons.c 12 Jun 2005 07:02:01 -0000 1.65 @@ -243,16 +243,32 @@ } void +ButtonSetSwallowed(Button * b) +{ + b->internal = 1; + b->default_show = 0; + b->flags |= FLAG_FIXED; + b->used = 1; + b->ref_count++; + ButtonCalc(b); + ButtonDraw(b); + EMapWindow(EoGetWin(b)); +} + +void ButtonMoveToDesktop(Button * b, int desk) { - if (desk < 0 || desk >= DesksGetNumber()) - return; + Desk *d; if (EoIsSticky(b) && EoGetLayer(b) == 1) desk = 0; - if (desk != EoGetDesk(b)) - EoReparent(b, desk, EoGetX(b), EoGetY(b)); + d = DeskGet(desk); + if (!d) + return; + + if (EoGetDesk(b) != d->num) + EoReparent(b, EoObj(d), EoGetX(b), EoGetY(b)); } void @@ -345,17 +361,6 @@ b->ref_count--; } -void -ButtonSetSwallowed(Button * b) -{ - b->internal = 1; - b->default_show = 0; - b->flags |= FLAG_FIXED; - b->used = 1; - b->ref_count++; - EobjListStackDel(&b->o); -} - static const char * ButtonGetName(const Button * b) { =================================================================== RCS file: /cvsroot/enlightenment/e16/e/src/eobj.c,v retrieving revision 1.34 retrieving revision 1.35 diff -u -3 -r1.34 -r1.35 --- eobj.c 9 Jun 2005 18:28:11 -0000 1.34 +++ eobj.c 12 Jun 2005 07:02:01 -0000 1.35 @@ -349,25 +349,33 @@ } void -EobjReparent(EObj * eo, int desk, int x, int y) +EobjReparent(EObj * eo, EObj * dst, int x, int y) { - Desk *d; int move; - d = DeskGet(desk); - if (!d) - return; - move = x != eo->x || y != eo->y; eo->x = x; eo->y = y; - EReparentWindow(eo->win, EoGetWin(d), x, y); + EReparentWindow(eo->win, dst->win, x, y); + if (dst->type == EOBJ_TYPE_DESK) + { + Desk *d = (Desk *) dst; + #if USE_COMPOSITE - if (eo->shown && eo->cmhook) - ECompMgrWinReparent(eo, desk, move); + if (eo->shown && eo->cmhook) + ECompMgrWinReparent(eo, d->num, move); #endif - EobjSetDesk(eo, desk); + EobjSetDesk(eo, d->num); + } + else + { + EobjListStackDel(eo); +#if USE_COMPOSITE + if (eo->cmhook) + ECompMgrWinDel(eo); +#endif + } } int =================================================================== RCS file: /cvsroot/enlightenment/e16/e/src/ewin-ops.c,v retrieving revision 1.48 retrieving revision 1.49 diff -u -3 -r1.48 -r1.49 --- ewin-ops.c 11 Jun 2005 08:25:30 -0000 1.48 +++ ewin-ops.c 12 Jun 2005 07:02:01 -0000 1.49 @@ -432,7 +432,7 @@ ModulesSignal(ESIGNAL_EWIN_CHANGE, ewin); if (reparent) - EoReparent(ewin, desk, x, y); + EoReparent(ewin, EoObj(DeskGet(desk)), x, y); else EoMoveResize(ewin, x, y, w, h); =================================================================== RCS file: /cvsroot/enlightenment/e16/e/src/slideout.c,v retrieving revision 1.32 retrieving revision 1.33 diff -u -3 -r1.32 -r1.33 --- slideout.c 9 Jun 2005 18:28:13 -0000 1.32 +++ slideout.c 12 Jun 2005 07:02:02 -0000 1.33 @@ -25,7 +25,7 @@ typedef struct { - EObj *win; + EObj o; char direction; int num_buttons; Button **button; @@ -48,14 +48,16 @@ SlideoutCreate(char *name, char dir) { Slideout *s; + Window win; s = Ecalloc(1, sizeof(Slideout)); if (!s) return NULL; - s->win = EobjWindowCreate(EOBJ_TYPE_MISC, -10, -10, 1, 1, 1, name); + win = ECreateWindow(VRoot.win, -10, -10, 1, 1, 1); + EobjInit(EoObj(s), EOBJ_TYPE_MISC, win, -10, -10, 1, 1, name); s->direction = dir; - EventCallbackRegister(s->win->win, 0, SlideoutHandleEvent, s); + EventCallbackRegister(EoGetWin(s), 0, SlideoutHandleEvent, s); return s; } @@ -78,8 +80,8 @@ EGetGeometry(win, NULL, NULL, NULL, &w, &h, NULL, NULL); XTranslateCoordinates(disp, win, VRoot.win, 0, 0, &x, &y, &dw); - sw = s->win->w; - sh = s->win->h; + sw = EoGetW(s); + sh = EoGetH(s); xx = 0; yy = 0; switch (s->direction) @@ -152,60 +154,60 @@ { d = DeskGet(0); } - EobjReparent(s->win, d->num, xx, yy); + EoReparent(s, EoObj(d), xx, yy); switch (s->direction) { case 0: att.win_gravity = SouthEastGravity; - EChangeWindowAttributes(s->win->win, CWWinGravity, &att); + EChangeWindowAttributes(EoGetWin(s), CWWinGravity, &att); att.win_gravity = NorthWestGravity; for (i = 0; i < s->num_buttons; i++) EChangeWindowAttributes(ButtonGetWin(s->button[i]), CWWinGravity, &att); - EobjMoveResize(s->win, xx, yy, 1, 1); + EobjMoveResize(EoObj(s), xx, yy, 1, 1); ESync(); - EobjMap(s->win, 1); - EobjSlideSizeTo(s->win, xx + sw, yy, xx, yy, 0, sh, sw, sh, + EobjMap(EoObj(s), 1); + EobjSlideSizeTo(EoObj(s), xx + sw, yy, xx, yy, 1, sh, sw, sh, Conf.slidespeedmap); break; case 1: att.win_gravity = NorthWestGravity; - EChangeWindowAttributes(s->win->win, CWWinGravity, &att); + EChangeWindowAttributes(EoGetWin(s), CWWinGravity, &att); att.win_gravity = SouthEastGravity; for (i = 0; i < s->num_buttons; i++) EChangeWindowAttributes(ButtonGetWin(s->button[i]), CWWinGravity, &att); - EobjMoveResize(s->win, xx, yy, 1, 1); + EobjMoveResize(EoObj(s), xx, yy, 1, 1); ESync(); - EobjMap(s->win, 1); - EobjSlideSizeTo(s->win, xx, yy, xx, yy, 0, sh, sw, sh, + EobjMap(EoObj(s), 1); + EobjSlideSizeTo(EoObj(s), xx, yy, xx, yy, 1, sh, sw, sh, Conf.slidespeedmap); break; case 2: att.win_gravity = SouthEastGravity; - EChangeWindowAttributes(s->win->win, CWWinGravity, &att); + EChangeWindowAttributes(EoGetWin(s), CWWinGravity, &att); att.win_gravity = NorthWestGravity; for (i = 0; i < s->num_buttons; i++) EChangeWindowAttributes(ButtonGetWin(s->button[i]), CWWinGravity, &att); - EobjMoveResize(s->win, xx, yy, 1, 1); + EobjMoveResize(EoObj(s), xx, yy, 1, 1); ESync(); - EobjMap(s->win, 1); - EobjSlideSizeTo(s->win, xx, yy + sh, xx, yy, sw, 0, sw, sh, + EobjMap(EoObj(s), 1); + EobjSlideSizeTo(EoObj(s), xx, yy + sh, xx, yy, sw, 1, sw, sh, Conf.slidespeedmap); break; case 3: att.win_gravity = NorthWestGravity; - EChangeWindowAttributes(s->win->win, CWWinGravity, &att); + EChangeWindowAttributes(EoGetWin(s), CWWinGravity, &att); att.win_gravity = SouthEastGravity; for (i = 0; i < s->num_buttons; i++) EChangeWindowAttributes(ButtonGetWin(s->button[i]), CWWinGravity, &att); - EobjMoveResize(s->win, xx, yy, 1, 1); + EobjMoveResize(EoObj(s), xx, yy, 1, 1); ESync(); - EobjMap(s->win, 1); - EobjSlideSizeTo(s->win, xx, yy, xx, yy, sw, 0, sw, sh, + EobjMap(EoObj(s), 1); + EobjSlideSizeTo(EoObj(s), xx, yy, xx, yy, sw, 1, sw, sh, Conf.slidespeedmap); break; default: @@ -214,7 +216,7 @@ s->ref_count++; s->context_ewin = ewin; - GrabPointerSet(s->win->win, ECSR_ROOT, 0); + GrabPointerSet(EoGetWin(s), ECSR_ROOT, 0); Mode_slideouts.active = s; } @@ -226,7 +228,7 @@ return; GrabPointerRelease(); - EobjUnmap(s->win); + EoUnmap(s); s->context_ewin = NULL; s->ref_count--; Mode_slideouts.active = NULL; @@ -269,7 +271,7 @@ } } - EobjResize(s->win, sw, sh); + EoResize(s, sw, sh); for (i = 0; i < s->num_buttons; i++) { @@ -297,7 +299,7 @@ break; } } - EShapePropagate(s->win->win); + EShapePropagate(EoGetWin(s)); } static void @@ -311,9 +313,8 @@ s->num_buttons++; s->button = Erealloc(s->button, sizeof(Button *) * s->num_buttons); s->button[s->num_buttons - 1] = b; - EReparentWindow(ButtonGetWin(b), s->win->win, 0, 0); + EobjReparent((EObj *) b, EoObj(s), 0, 0); ButtonSetSwallowed(b); - ButtonShow(b); SlideoutCalcSize(s); } @@ -326,12 +327,6 @@ } #endif -static const char * -SlideoutGetName(Slideout * s) -{ - return s->win->name; -} - static void SlideoutCheckButtonEvent(Slideout * s, XEvent * ev) { @@ -341,7 +336,7 @@ x = ev->xbutton.x; y = ev->xbutton.y; - if (x < 0 || y < 0 || x > s->win->w || y >= s->win->h) + if (x < 0 || y < 0 || x > EoGetW(s) || y >= EoGetH(s)) return; for (i = 0; i < s->num_buttons; i++) @@ -423,8 +418,7 @@ { case CONFIG_CLOSE: if (slideout) - AddItem(slideout, SlideoutGetName(slideout), 0, - LIST_TYPE_SLIDEOUT); + AddItem(slideout, EoGetName(slideout), 0, LIST_TYPE_SLIDEOUT); goto done; case CONFIG_CLASSNAME: if (name) ------------------------------------------------------- This SF.Net email is sponsored by: NEC IT Guy Games. How far can you shotput a projector? How fast can you ride your desk chair down the office luge track? If you want to score the big prize, get to know the little guy. Play to win an NEC 61" plasma display: http://www.necitguy.com/?r=20 _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs