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

Reply via email to