summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--openbox/client.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/openbox/client.c b/openbox/client.c
index 6446a794..837dd019 100644
--- a/openbox/client.c
+++ b/openbox/client.c
@@ -2421,6 +2421,18 @@ gboolean client_hide(ObClient *self)
gboolean hide = FALSE;
if (!client_should_show(self)) {
+ if (self == focus_client) {
+ /* if there is a grab going on, then we need to cancel it. if we
+ move focus during the grab, applications will get
+ NotifyWhileGrabbed events and ignore them !
+
+ actions should not rely on being able to move focus during an
+ interactive grab.
+ */
+ if (keyboard_interactively_grabbed())
+ keyboard_interactive_cancel();
+ }
+
frame_hide(self->frame);
hide = TRUE;
}