diff --git a/src/client.c b/src/client.c index e76bee9f6fa1a7063d682c8c46b04e884fe05d64..1ea7d06319ff36a07f6a475a48767c3bb5f97b7e 100644 --- a/src/client.c +++ b/src/client.c @@ -4295,12 +4295,21 @@ clientMove (Client * c, XEvent * ev) g2 = myScreenGrabPointer (screen_info, ButtonMotionMask | ButtonReleaseMask, myDisplayGetCursorMove (display_info), myDisplayGetCurrentTime (display_info)); - if (!g1 || !g2) + if (passdata.use_keys && !g1) { - TRACE ("grab failed in clientMove"); + TRACE ("keyboard grab failed in clientMove"); gdk_beep (); myScreenUngrabKeyboard (screen_info); + + return; + } + + if (!g2) + { + TRACE ("button grab failed in clientMove"); + + gdk_beep (); myScreenUngrabPointer (screen_info); return; @@ -4363,7 +4372,10 @@ clientMove (Client * c, XEvent * ev) } clientConfigure (c, &wc, changes, NO_CFG_FLAG); - myScreenUngrabKeyboard (screen_info); + if (g1) + { + myScreenUngrabKeyboard (screen_info); + } if (!passdata.released) { /* If this is a drag-move, wait for the button to be released. @@ -4840,12 +4852,21 @@ clientResize (Client * c, int corner, XEvent * ev) myDisplayGetCursorResize(display_info, passdata.corner), myDisplayGetCurrentTime (display_info)); - if (!g1 || !g2) + if (passdata.use_keys && !g1) { - TRACE ("grab failed in clientResize"); + TRACE ("keyboard grab failed in clientResize"); gdk_beep (); myScreenUngrabKeyboard (screen_info); + + return; + } + + if (!g2) + { + TRACE ("button grab failed in clientResize"); + + gdk_beep (); myScreenUngrabPointer (screen_info); return; @@ -4910,7 +4931,10 @@ clientResize (Client * c, int corner, XEvent * ev) c->xsync_waiting = FALSE; #endif /* HAVE_XSYNC */ - myScreenUngrabKeyboard (screen_info); + if (g1) + { + myScreenUngrabKeyboard (screen_info); + } if (!passdata.released) { /* If this is a drag-resize, wait for the button to be released. diff --git a/src/focus.c b/src/focus.c index f3a0d8a42a183aa809142529772ee47e88f4a284..4a72e08b0de9ae3b7dff7e3d32c23fc810fc36e6 100644 --- a/src/focus.c +++ b/src/focus.c @@ -305,12 +305,12 @@ clientPassFocus (ScreenInfo *screen_info, Client *c, Client *exclude) new_focus = NULL; current_focus = client_focus; c2 = NULL; - +#if 0 if (pending_focus) { current_focus = pending_focus; } - +#endif if ((c || current_focus) && (c != current_focus)) { return; diff --git a/src/keyboard.c b/src/keyboard.c index 83648e5d069423c7e0fc5a1ec879aeea5e3248c7..e16a2ab833198a294f615120823ab1062167f378 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -160,50 +160,50 @@ grabKey (Display * dpy, MyKey * key, Window w) TRACE ("entering grabKey"); - status=GrabSuccess; + status = GrabSuccess; if (key->keycode) { if (key->modifier == 0) { status |= - XGrabKey (dpy, key->keycode, AnyModifier, w, FALSE, - GrabModeAsync, GrabModeSync); + XGrabKey (dpy, key->keycode, AnyModifier, w, + TRUE, GrabModeAsync, GrabModeSync); } else { /* Here we grab all combinations of well known modifiers */ status |= XGrabKey (dpy, key->keycode, - key->modifier, w, FALSE, - GrabModeAsync, GrabModeSync); + key->modifier, w, + TRUE, GrabModeAsync, GrabModeSync); status |= XGrabKey (dpy, key->keycode, key->modifier | ScrollLockMask, w, - FALSE, GrabModeAsync, GrabModeSync); + TRUE, GrabModeAsync, GrabModeSync); status |= XGrabKey (dpy, key->keycode, key->modifier | NumLockMask, w, - FALSE, GrabModeAsync, GrabModeSync); + TRUE, GrabModeAsync, GrabModeSync); status |= XGrabKey (dpy, key->keycode, key->modifier | LockMask, w, - FALSE, GrabModeAsync, GrabModeSync); + TRUE, GrabModeAsync, GrabModeSync); status |= XGrabKey (dpy, key->keycode, - key->modifier | ScrollLockMask | NumLockMask, w, FALSE, - GrabModeAsync, GrabModeSync); + key->modifier | ScrollLockMask | NumLockMask, w, + TRUE, GrabModeAsync, GrabModeSync); status |= XGrabKey (dpy, key->keycode, - key->modifier | ScrollLockMask | LockMask, w, FALSE, - GrabModeAsync, GrabModeSync); + key->modifier | ScrollLockMask | LockMask, w, + TRUE, GrabModeAsync, GrabModeSync); status |= XGrabKey (dpy, key->keycode, - key->modifier | LockMask | NumLockMask, w, FALSE, - GrabModeAsync, GrabModeSync); + key->modifier | LockMask | NumLockMask, w, + TRUE, GrabModeAsync, GrabModeSync); status |= XGrabKey (dpy, key->keycode, - key->modifier | ScrollLockMask | LockMask | NumLockMask, - w, FALSE, GrabModeAsync, GrabModeSync); + key->modifier | ScrollLockMask | LockMask | NumLockMask, w, + TRUE, GrabModeAsync, GrabModeSync); } } @@ -225,7 +225,7 @@ grabButton (Display * dpy, int button, int modifier, Window w) TRACE ("entering grabButton"); - status=GrabSuccess; + status = GrabSuccess; if (modifier == AnyModifier) { status |=