[Xfce4-commits] r26909 - xfwm4/trunk/src

Olivier Fourdan olivier at xfce.org
Wed Apr 30 22:52:27 CEST 2008


Author: olivier
Date: 2008-04-30 20:52:27 +0000 (Wed, 30 Apr 2008)
New Revision: 26909

Modified:
   xfwm4/trunk/src/client.c
   xfwm4/trunk/src/events.c
   xfwm4/trunk/src/screen.c
Log:
Fix grab count not being decreased when pointer already grabbed by the client application

Modified: xfwm4/trunk/src/client.c
===================================================================
--- xfwm4/trunk/src/client.c	2008-04-30 10:42:11 UTC (rev 26908)
+++ xfwm4/trunk/src/client.c	2008-04-30 20:52:27 UTC (rev 26909)
@@ -4317,21 +4317,12 @@
     g2 = myScreenGrabPointer (screen_info, ButtonMotionMask | ButtonReleaseMask,
                               myDisplayGetCursorMove (display_info),
                               myDisplayGetCurrentTime (display_info));
-    if (passdata.use_keys && !g1)
+    if ((passdata.use_keys && !g1) || (!g2))
     {
-        TRACE ("keyboard grab failed in clientMove");
+        TRACE ("grab failed in clientMove");
 
         gdk_beep ();
         myScreenUngrabKeyboard (screen_info);
-
-        return;
-    }
-
-    if (!g2)
-    {
-        TRACE ("button grab failed in clientMove");
-
-        gdk_beep ();
         myScreenUngrabPointer (screen_info);
 
         return;
@@ -4396,10 +4387,6 @@
     }
     clientConfigure (c, &wc, changes, NO_CFG_FLAG);
 
-    if (g1)
-    {
-        myScreenUngrabKeyboard (screen_info);
-    }
     if (!passdata.released)
     {
         /* If this is a drag-move, wait for the button to be released.
@@ -4409,6 +4396,7 @@
         gtk_main ();
         eventFilterPop (display_info->xfilter);
     }
+    myScreenUngrabKeyboard (screen_info);
     myScreenUngrabPointer (screen_info);
 
     if (passdata.grab && screen_info->params->box_move)
@@ -4876,21 +4864,12 @@
                               myDisplayGetCursorResize(display_info, passdata.corner),
                               myDisplayGetCurrentTime (display_info));
 
-    if (passdata.use_keys && !g1)
+    if ((passdata.use_keys && !g1) || (!g2))
     {
-        TRACE ("keyboard grab failed in clientResize");
+        TRACE ("grab failed in clientResize");
 
         gdk_beep ();
         myScreenUngrabKeyboard (screen_info);
-
-        return;
-    }
-
-    if (!g2)
-    {
-        TRACE ("button grab failed in clientResize");
-
-        gdk_beep ();
         myScreenUngrabPointer (screen_info);
 
         return;
@@ -4957,10 +4936,6 @@
     c->xsync_waiting = FALSE;
 #endif /* HAVE_XSYNC */
 
-    if (g1)
-    {
-        myScreenUngrabKeyboard (screen_info);
-    }
     if (!passdata.released)
     {
         /* If this is a drag-resize, wait for the button to be released.
@@ -4970,6 +4945,7 @@
         gtk_main ();
         eventFilterPop (display_info->xfilter);
     }
+    myScreenUngrabKeyboard (screen_info);
     myScreenUngrabPointer (screen_info);
 
     if (passdata.grab && screen_info->params->box_resize)

Modified: xfwm4/trunk/src/events.c
===================================================================
--- xfwm4/trunk/src/events.c	2008-04-30 10:42:11 UTC (rev 26908)
+++ xfwm4/trunk/src/events.c	2008-04-30 20:52:27 UTC (rev 26909)
@@ -482,7 +482,7 @@
                 status = EVENT_FILTER_REMOVE;
                 if (ev_screen_info->clients)
                 {
-                    clientCycle (ev_screen_info->clients->prev, (XEvent *) ev);
+                    clientCycle (ev_screen_info->clients->prev, ev);
                 }
                 break;
             case KEY_CLOSE_WINDOW:

Modified: xfwm4/trunk/src/screen.c
===================================================================
--- xfwm4/trunk/src/screen.c	2008-04-30 10:42:11 UTC (rev 26908)
+++ xfwm4/trunk/src/screen.c	2008-04-30 20:52:27 UTC (rev 26909)
@@ -399,7 +399,7 @@
     {
         grab = (XGrabKeyboard (myScreenGetXDisplay (screen_info),
                                screen_info->xfwm4_win,
-                               TRUE,
+                               FALSE,
                                GrabModeAsync, GrabModeAsync,
                                time) == GrabSuccess);
     }
@@ -422,7 +422,7 @@
     {
         grab = (XGrabPointer (myScreenGetXDisplay (screen_info),
                               screen_info->xfwm4_win,
-                              TRUE, event_mask,
+                              FALSE, event_mask,
                               GrabModeAsync, GrabModeAsync,
                               screen_info->xroot,
                               cursor,



More information about the Xfce4-commits mailing list