Enlightenment CVS committal Author : kwo Project : e16 Module : e
Dir : e16/e/src Modified Files: Tag: branch-exp E.h aclass.c borders.c ewin-ops.c Log Message: Merge. =================================================================== RCS file: /cvsroot/enlightenment/e16/e/src/E.h,v retrieving revision 1.314.2.65 retrieving revision 1.314.2.66 diff -u -3 -r1.314.2.65 -r1.314.2.66 --- E.h 30 Nov 2004 23:31:50 -0000 1.314.2.65 +++ E.h 5 Dec 2004 11:07:20 -0000 1.314.2.66 @@ -629,6 +629,7 @@ char changes_shape; char shadedir; unsigned int ref_count; + ActionClass *aclass; } Border; =================================================================== RCS file: /cvsroot/enlightenment/e16/e/src/Attic/aclass.c,v retrieving revision 1.1.2.5 retrieving revision 1.1.2.6 diff -u -3 -r1.1.2.5 -r1.1.2.6 --- aclass.c 19 Nov 2004 21:02:24 -0000 1.1.2.5 +++ aclass.c 5 Dec 2004 11:07:20 -0000 1.1.2.6 @@ -292,7 +292,7 @@ _EFREE(aclass_tooltipstring); _EFREE(action_tooltipstring); err = 0; - break; + goto done; case CONFIG_CLASSNAME: case ACLASS_NAME: @@ -911,6 +911,11 @@ mouse = 1; break; case LeaveNotify: + /* If frame window, quit if pointer is still inside */ + if (ewin && ev->xcrossing.window == EoGetWin(ewin) && + (ev->xcrossing.x >= 0 && ev->xcrossing.x < EoGetW(ewin) && + ev->xcrossing.y >= 0 && ev->xcrossing.y < EoGetH(ewin))) + EDBUG_RETURN(0); type = EVENT_MOUSE_LEAVE; button = -1; modifiers = ev->xcrossing.state & mask; =================================================================== RCS file: /cvsroot/enlightenment/e16/e/src/borders.c,v retrieving revision 1.221.2.18 retrieving revision 1.221.2.19 diff -u -3 -r1.221.2.18 -r1.221.2.19 --- borders.c 19 Nov 2004 21:02:24 -0000 1.221.2.18 +++ borders.c 5 Dec 2004 11:07:20 -0000 1.221.2.19 @@ -38,6 +38,7 @@ (EWIN_BORDER_PART_EVENT_MASK | ExposureMask) static void BorderWinpartHandleEvents(XEvent * ev, void *prm); +static void BorderFrameHandleEvents(XEvent * ev, void *prm); void SyncBorderToEwin(EWin * ewin) @@ -530,10 +531,14 @@ if (ewin->border) { + EventCallbackUnregister(EoGetWin(ewin), 0, BorderFrameHandleEvents, + ewin); px = ewin->border->border.left; py = ewin->border->border.top; for (i = 0; i < ewin->border->num_winparts; i++) { + EventCallbackUnregister(ewin->bits[i].win, 0, + BorderWinpartHandleEvents, &ewin->bits[i]); if (ewin->bits[i].win) EDestroyWindow(disp, ewin->bits[i].win); } @@ -547,8 +552,11 @@ BorderIncRefcount(b); HintsSetWindowBorder(ewin); + EventCallbackRegister(EoGetWin(ewin), 0, BorderFrameHandleEvents, ewin); + if (b->num_winparts > 0) ewin->bits = Emalloc(sizeof(EWinBit) * b->num_winparts); + for (i = 0; i < b->num_winparts; i++) { ewin->bits[i].ewin = ewin; /* Reference to associated Ewin */ @@ -685,7 +693,7 @@ { Border *b; - EDBUG(5, "CreateBorder"); + EDBUG(5, "BorderCreate"); b = Ecalloc(1, sizeof(Border)); if (!b) @@ -693,7 +701,6 @@ b->name = Estrdup(name); b->group_border_name = NULL; - b->part = NULL; b->shadedir = 2; EDBUG_RETURN(b); @@ -736,6 +743,8 @@ Efree(b->name); if (b->group_border_name) Efree(b->group_border_name); + if (b->aclass) + ActionclassDecRefcount(b->aclass); EDBUG_RETURN_; } @@ -1067,6 +1076,21 @@ #endif static void +BorderFrameHandleEvents(XEvent * ev, void *prm) +{ + EWin *ewin = (EWin *) prm; + + switch (ev->type) + { + case EnterNotify: + case LeaveNotify: + if (ewin->border->aclass) + EventAclass(ev, ewin, ewin->border->aclass); + break; + } +} + +static void BorderWinpartHandleEvents(XEvent * ev, void *prm) { EWinBit *wbit = (EWinBit *) prm; @@ -1312,6 +1336,10 @@ case BORDER_CHANGES_SHAPE: b->changes_shape = atoi(s2); break; + case CONFIG_ACTIONCLASS: + b->aclass = + FindItem(s2, 0, LIST_FINDBY_NAME, LIST_TYPE_ACLASS); + break; default: break; } =================================================================== RCS file: /cvsroot/enlightenment/e16/e/src/Attic/ewin-ops.c,v retrieving revision 1.1.2.19 retrieving revision 1.1.2.20 diff -u -3 -r1.1.2.19 -r1.1.2.20 --- ewin-ops.c 30 Nov 2004 23:31:52 -0000 1.1.2.19 +++ ewin-ops.c 5 Dec 2004 11:07:20 -0000 1.1.2.20 @@ -928,9 +928,9 @@ case 0: att.win_gravity = EastGravity; XChangeWindowAttributes(disp, ewin->client.win, CWWinGravity, &att); - a = ewin->border->border.left; - b = ewin->client.w + ewin->border->border.left + - ewin->border->border.right; + a = ewin->border->border.left + ewin->border->border.right; + b = ewin->client.w + a; + a++; ewin->shaded = 0; EMoveResizeWindow(disp, ewin->win_container, ewin->border->border.left, ewin->border->border.top, @@ -976,13 +976,11 @@ case 1: att.win_gravity = WestGravity; XChangeWindowAttributes(disp, ewin->client.win, CWWinGravity, &att); - a = ewin->border->border.right; - b = ewin->client.w + ewin->border->border.left + - ewin->border->border.right; + a = ewin->border->border.left + ewin->border->border.right; + b = ewin->client.w + a; c = EoGetX(ewin); - d = EoGetX(ewin) + EoGetW(ewin) - (ewin->border->border.right + - ewin->client.w + - ewin->border->border.left); + d = EoGetX(ewin) + EoGetW(ewin) - (ewin->client.w + a); + a++; ewin->shaded = 0; EMoveResizeWindow(disp, ewin->win_container, ewin->border->border.left, ewin->border->border.top, @@ -1026,9 +1024,9 @@ case 2: att.win_gravity = SouthGravity; XChangeWindowAttributes(disp, ewin->client.win, CWWinGravity, &att); - a = ewin->border->border.top; - b = ewin->client.h + ewin->border->border.top + - ewin->border->border.bottom; + a = ewin->border->border.top + ewin->border->border.bottom; + b = ewin->client.h + a; + a++; ewin->shaded = 0; EMoveResizeWindow(disp, ewin->win_container, ewin->border->border.left, ewin->border->border.top, @@ -1076,13 +1074,11 @@ case 3: att.win_gravity = SouthGravity; XChangeWindowAttributes(disp, ewin->client.win, CWWinGravity, &att); - a = ewin->border->border.bottom; - b = ewin->client.h + ewin->border->border.top + - ewin->border->border.bottom; + a = ewin->border->border.top + ewin->border->border.bottom; + b = ewin->client.h + a; c = EoGetY(ewin); - d = EoGetY(ewin) + EoGetH(ewin) - (ewin->border->border.bottom + - ewin->client.h + - ewin->border->border.top); + d = EoGetY(ewin) + EoGetH(ewin) - (ewin->client.h + a); + a++; ewin->shaded = 0; EMoveResizeWindow(disp, ewin->win_container, ewin->border->border.left, ewin->border->border.top, ------------------------------------------------------- SF email is sponsored by - The IT Product Guide Read honest & candid reviews on hundreds of IT Products from real users. Discover which products truly live up to the hype. Start reading now. http://productguide.itmanagersjournal.com/ _______________________________________________ enlightenment-cvs mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs