From 244025611bfca21df3491c5cbd0ae2bcd9a1fd8a Mon Sep 17 00:00:00 2001 From: Olivier Fourdan <fourdan.olivier@wanadoo.fr> Date: Mon, 23 Feb 2009 23:59:06 +0000 Subject: [PATCH] * src/cycle.c, src/moveresize.c: Make sure any active grab on the keyboard and pointer are released (Corollary to bug #4959). (Old svn revision: 29550) --- ChangeLog | 5 +++++ src/cycle.c | 12 ++++++++---- src/moveresize.c | 26 ++++++++++++++++++-------- 3 files changed, 31 insertions(+), 12 deletions(-) diff --git a/ChangeLog b/ChangeLog index 66fb929af..735a23da0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +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, diff --git a/src/cycle.c b/src/cycle.c index e3d901d76..08bd64a10 100644 --- a/src/cycle.c +++ b/src/cycle.c @@ -214,8 +214,8 @@ clientCycle (Client * c, XKeyEvent * ev) 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 @@ clientCycle (Client * c, XKeyEvent * ev) 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); } diff --git a/src/moveresize.c b/src/moveresize.c index 686b60478..0082f8bc0 100644 --- a/src/moveresize.c +++ b/src/moveresize.c @@ -952,8 +952,8 @@ clientMove (Client * c, XEvent * ev) 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,8 +1022,13 @@ clientMove (Client * c, XEvent * ev) 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) { @@ -1491,8 +1496,8 @@ clientResize (Client * c, int handle, XEvent * ev) 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,8 +1568,13 @@ clientResize (Client * c, int handle, XEvent * ev) 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) { -- GitLab