Enlightenment CVS committal

Author  : kwo
Project : e16
Module  : e

Dir     : e16/e/src


Modified Files:
        E.h actions.c evhandlers.c globals.c gnome.c 


Log Message:
Fix action processing at end of window move.
Don't send events to non-existing buttonproxy window.

===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/E.h,v
retrieving revision 1.180
retrieving revision 1.181
diff -u -3 -r1.180 -r1.181
--- E.h 12 Jan 2004 21:05:00 -0000      1.180
+++ E.h 13 Jan 2004 20:01:43 -0000      1.181
@@ -1318,6 +1318,7 @@
    char                nogroup;
    char                keybinds_changed;
    char                firsttime;
+   Window              button_proxy_win;
 }
 EMode;
 
@@ -1904,6 +1905,7 @@
 void                AddToAction(Action * act, int id, void *params);
 void                AddAction(ActionClass * a, Action * act);
 int                 EventAclass(XEvent * ev, ActionClass * a);
+void                doActionEnd(void);
 int                 spawnMenu(void *params);
 int                 hideMenu(void *params);
 int                 doNothing(void *params);
@@ -2833,7 +2835,6 @@
 extern Window       init_win1;
 extern Window       init_win2;
 extern Window       init_win_ext;
-extern Window       bpress_win;
 extern int          deskorder[ENLIGHTENMENT_CONF_NUM_DESKTOPS];
 
 #define FILEPATH_LEN_MAX 4096
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/actions.c,v
retrieving revision 1.128
retrieving revision 1.129
diff -u -3 -r1.128 -r1.129
--- actions.c   12 Jan 2004 20:43:17 -0000      1.128
+++ actions.c   13 Jan 2004 20:01:43 -0000      1.129
@@ -1239,6 +1239,55 @@
    EDBUG_RETURN(0);
 }
 
+void
+doActionEnd(void)
+{
+   EWin               *ewin;
+   int                 i, num;
+   EWin              **gwins;
+
+   switch (mode.mode)
+     {
+     case MODE_RESIZE:
+     case MODE_RESIZE_H:
+     case MODE_RESIZE_V:
+       doResizeEnd(NULL);
+       mode.action_inhibit = 1;
+       break;
+     case MODE_MOVE:
+       ewin = mode.ewin;
+       if (ewin)
+         {
+            gwins =
+               ListWinGroupMembersForEwin(ewin, ACTION_MOVE, mode.nogroup,
+                                          &num);
+            if ((conf.movemode == 0) && (mode.mode == MODE_MOVE))
+               for (i = 0; i < num; i++)
+                  DetermineEwinFloat(gwins[i], 0, 0);
+            Efree(gwins);
+         }
+       doMoveEnd(NULL);
+       if (mode.have_place_grab)
+         {
+            mode.have_place_grab = 0;
+            XUngrabPointer(disp, CurrentTime);
+         }
+       mode.ewin = NULL;
+       mode.action_inhibit = 1;
+       break;
+     case MODE_DESKDRAG:
+       mode.mode = MODE_NONE;
+       break;
+     case MODE_BUTTONDRAG:
+       if (!mode.button_move_pending)
+          mode.action_inhibit = 1;
+       doDragButtonEnd(NULL);
+       break;
+     default:
+       break;
+     }
+}
+
 int
 doRaise(void *params)
 {
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/evhandlers.c,v
retrieving revision 1.138
retrieving revision 1.139
diff -u -3 -r1.138 -r1.139
--- evhandlers.c        12 Jan 2004 20:43:18 -0000      1.138
+++ evhandlers.c        13 Jan 2004 20:01:44 -0000      1.139
@@ -95,6 +95,14 @@
       DoIn("TOOLTIP_TIMEOUT", conf.tooltips.tiptime, ToolTipTimeout, 0, NULL);
 }
 
+static void
+ButtonProxySendEvent(XEvent * ev)
+{
+   if (mode.button_proxy_win)
+      XSendEvent(disp, mode.button_proxy_win, False, SubstructureNotifyMask,
+                ev);
+}
+
 void
 HandleClientMessage(XEvent * ev)
 {
@@ -1343,7 +1351,7 @@
        if (ac)
          {
             if (!EventAclass(ev, ac))
-               XSendEvent(disp, bpress_win, False, SubstructureNotifyMask, ev);
+               ButtonProxySendEvent(ev);
          }
        EDBUG_RETURN_;
      }
@@ -1415,9 +1423,7 @@
 {
    Window              win = ev->xbutton.window;
    EWin               *ewin;
-   int                 i, num;
    Slideout           *pslideout;
-   EWin              **gwins;
 
    EDBUG(5, "HandleMouseUp");
 
@@ -1461,57 +1467,20 @@
      }
 #endif
 
-   switch (mode.mode)
+   doActionEnd();
+   if (mode.place)
      {
-     case MODE_RESIZE:
-     case MODE_RESIZE_H:
-     case MODE_RESIZE_V:
-       doResizeEnd(NULL);
-       mode.action_inhibit = 1;
-       break;
-     case MODE_MOVE:
-       ewin = mode.ewin;
-       if (ewin)
-         {
-            gwins =
-               ListWinGroupMembersForEwin(ewin, ACTION_MOVE, mode.nogroup,
-                                          &num);
-            if ((conf.movemode == 0) && (mode.mode == MODE_MOVE))
-               for (i = 0; i < num; i++)
-                  DetermineEwinFloat(gwins[i], 0, 0);
-            Efree(gwins);
-         }
-       doMoveEnd(NULL);
-       if (mode.have_place_grab)
-         {
-            mode.have_place_grab = 0;
-            XUngrabPointer(disp, CurrentTime);
-         }
-       mode.ewin = NULL;
-       mode.action_inhibit = 1;
-       if (mode.place)
-         {
-            mode.place = 0;
-            goto exit;
-         }
-       break;
-     case MODE_DESKDRAG:
-       mode.mode = MODE_NONE;
-       break;
-     case MODE_BUTTONDRAG:
-       if (!mode.button_move_pending)
-          mode.action_inhibit = 1;
-       doDragButtonEnd(NULL);
-       break;
-     default:
-       break;
+       mode.place = 0;
+       goto exit;
      }
 
    if (sentpress)
      {
+       /* We never get here? */
        sentpress = 0;
-       XSendEvent(disp, bpress_win, False, SubstructureNotifyMask, ev);
+       ButtonProxySendEvent(ev);
      }
+
    mode.context_win = last_bpress;
 
    ewin = SlideoutsGetContextEwin();
@@ -1525,10 +1494,13 @@
        mode.justclicked = 1;
      }
 
-   if (MenusEventMouseUp(ev))
+   if (!clickmenu && BordersEventMouseUp(ev))
       goto exit;
 
-   if (!clickmenu && BordersEventMouseUp(ev))
+   if (mode.action_inhibit)
+      goto exit;
+
+   if (MenusEventMouseUp(ev))
       goto exit;
 
    if (ButtonsEventMouseUp(ev))
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/globals.c,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -3 -r1.24 -r1.25
--- globals.c   12 Jan 2004 20:43:18 -0000      1.24
+++ globals.c   13 Jan 2004 20:01:44 -0000      1.25
@@ -55,7 +55,6 @@
 Window              init_win1 = 0;
 Window              init_win2 = 0;
 Window              init_win_ext = 0;
-Window              bpress_win = 0;
 int                 deskorder[ENLIGHTENMENT_CONF_NUM_DESKTOPS];
 char                themepath[FILEPATH_LEN_MAX];
 char                themename[FILEPATH_LEN_MAX];
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/gnome.c,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -3 -r1.29 -r1.30
--- gnome.c     12 Jan 2004 20:43:18 -0000      1.29
+++ gnome.c     13 Jan 2004 20:01:44 -0000      1.30
@@ -770,11 +770,11 @@
       CARD32              val;
 
       atom_set = XInternAtom(disp, "_WIN_DESKTOP_BUTTON_PROXY", False);
-      bpress_win = ECreateWindow(root.win, -80, -80, 24, 24, 0);
-      val = bpress_win;
+      mode.button_proxy_win = ECreateWindow(root.win, -80, -80, 24, 24, 0);
+      val = mode.button_proxy_win;
       XChangeProperty(disp, root.win, atom_set, XA_CARDINAL, 32,
                      PropModeReplace, (unsigned char *)&val, 1);
-      XChangeProperty(disp, bpress_win, atom_set, XA_CARDINAL, 32,
+      XChangeProperty(disp, mode.button_proxy_win, atom_set, XA_CARDINAL, 32,
                      PropModeReplace, (unsigned char *)&val, 1);
    }
 




-------------------------------------------------------
This SF.net email is sponsored by: Perforce Software.
Perforce is the Fast Software Configuration Management System offering
advanced branching capabilities and atomic changes on 50+ platforms.
Free Eval! http://www.perforce.com/perforce/loadprog.html
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to