[Xfce4-commits] r29550 - in xfwm4/trunk: . src

Olivier Fourdan olivier at xfce.org
Tue Feb 24 00:59:07 CET 2009


Author: olivier
Date: 2009-02-23 23:59:06 +0000 (Mon, 23 Feb 2009)
New Revision: 29550

Modified:
   xfwm4/trunk/ChangeLog
   xfwm4/trunk/src/cycle.c
   xfwm4/trunk/src/moveresize.c
Log:
	* src/cycle.c, src/moveresize.c: Make sure any active grab on the
	  keyboard and pointer are released  (Corollary to bug #4959).

Modified: xfwm4/trunk/ChangeLog
===================================================================
--- xfwm4/trunk/ChangeLog	2009-02-23 20:24:02 UTC (rev 29549)
+++ xfwm4/trunk/ChangeLog	2009-02-23 23:59:06 UTC (rev 29550)
@@ -1,5 +1,10 @@
 2009-02-23	olivier
 
+	* src/cycle.c, src/moveresize.c: Make sure any active grab on the
+	  keyboard and pointer are released  (Corollary to bug #4959).
+
+2009-02-23	olivier
+
 	* src/netwm.h, src/netwm.c, src/client.h, src/client.c, src/events.c,
 	  src/focus.c: Capture user time at startup, a bit of refactoring to
 	  avoid duplication of code (that led to this bug to remain after a

Modified: xfwm4/trunk/src/cycle.c
===================================================================
--- xfwm4/trunk/src/cycle.c	2009-02-23 20:24:02 UTC (rev 29549)
+++ xfwm4/trunk/src/cycle.c	2009-02-23 23:59:06 UTC (rev 29550)
@@ -214,8 +214,8 @@
         TRACE ("grab failed in clientCycle");
 
         gdk_beep ();
-        myScreenUngrabKeyboard (screen_info, ev->time);
-        myScreenUngrabPointer (screen_info, ev->time);
+        myScreenUngrabKeyboard (screen_info, CurrentTime);
+        myScreenUngrabPointer (screen_info, CurrentTime);
 
         return;
     }
@@ -304,6 +304,10 @@
         clientSetFocus (screen_info, c, myDisplayGetCurrentTime (display_info), NO_FOCUS_FLAG);
     }
 
-    myScreenUngrabKeyboard (screen_info, myDisplayGetCurrentTime (display_info));
-    myScreenUngrabPointer (screen_info, myDisplayGetCurrentTime (display_info));
+    /*
+     * Use CurrentTime instead of actual last event time to make sure
+     * that the grab is released in any case.
+     */
+    myScreenUngrabKeyboard (screen_info, CurrentTime);
+    myScreenUngrabPointer (screen_info, CurrentTime);
 }

Modified: xfwm4/trunk/src/moveresize.c
===================================================================
--- xfwm4/trunk/src/moveresize.c	2009-02-23 20:24:02 UTC (rev 29549)
+++ xfwm4/trunk/src/moveresize.c	2009-02-23 23:59:06 UTC (rev 29550)
@@ -952,8 +952,8 @@
         TRACE ("grab failed in clientMove");
 
         gdk_beep ();
-        myScreenUngrabKeyboard (screen_info, myDisplayGetCurrentTime (display_info));
-        myScreenUngrabPointer (screen_info, myDisplayGetCurrentTime (display_info));
+        myScreenUngrabKeyboard (screen_info, CurrentTime);
+        myScreenUngrabPointer (screen_info, CurrentTime);
 
         return;
     }
@@ -1022,9 +1022,14 @@
         gtk_main ();
         eventFilterPop (display_info->xfilter);
     }
-    myScreenUngrabKeyboard (screen_info, myDisplayGetCurrentTime (display_info));
-    myScreenUngrabPointer (screen_info, myDisplayGetCurrentTime (display_info));
 
+    /*
+     * Use CurrentTime instead of actual last event time to make sure
+     * that the grab is released in any case.
+     */
+    myScreenUngrabKeyboard (screen_info, CurrentTime);
+    myScreenUngrabPointer (screen_info, CurrentTime);
+
     if (passdata.grab && screen_info->params->box_move)
     {
         myDisplayUngrabServer (display_info);
@@ -1491,8 +1496,8 @@
         TRACE ("grab failed in clientResize");
 
         gdk_beep ();
-        myScreenUngrabKeyboard (screen_info, myDisplayGetCurrentTime (display_info));
-        myScreenUngrabPointer (screen_info, myDisplayGetCurrentTime (display_info));
+        myScreenUngrabKeyboard (screen_info, CurrentTime);
+        myScreenUngrabPointer (screen_info, CurrentTime);
 
         return;
     }
@@ -1563,9 +1568,14 @@
         gtk_main ();
         eventFilterPop (display_info->xfilter);
     }
-    myScreenUngrabKeyboard (screen_info, myDisplayGetCurrentTime (display_info));
-    myScreenUngrabPointer (screen_info, myDisplayGetCurrentTime (display_info));
 
+    /*
+     * Use CurrentTime instead of actual last event time to make sure
+     * that the grab is released in any case.
+     */
+    myScreenUngrabKeyboard (screen_info, CurrentTime);
+    myScreenUngrabPointer (screen_info, CurrentTime);
+
     if (passdata.grab && screen_info->params->box_resize)
     {
         myDisplayUngrabServer (display_info);




More information about the Xfce4-commits mailing list