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