window.c: Prevent key event delivery while a grab is active
authorKristian Høgsberg <krh@bitplanet.net>
Tue, 29 Apr 2014 21:19:20 +0000 (14:19 -0700)
committerKristian Høgsberg <krh@bitplanet.net>
Tue, 29 Apr 2014 21:21:46 +0000 (14:21 -0700)
Ideally, we'll update the key event handling to deliver events to widgets,
but in the meantime, just blocking key event delivery while a grab is
active goes a long way.

clients/window.c

index 005102b..adcec0d 100644 (file)
@@ -2876,6 +2876,14 @@ keyboard_handle_key(void *data, struct wl_keyboard *keyboard,
        if (!window || !input->xkb.state)
                return;
 
+       /* We only use input grabs for pointer events for now, so just
+        * ignore key presses if a grab is active.  We expand the key
+        * event delivery mechanism to route events to widgets to
+        * properly handle key grabs.  In the meantime, this prevents
+        * key event devlivery while a grab is active. */
+       if (input->grab && input->grab_button == 0)
+               return;
+
        num_syms = xkb_key_get_syms(input->xkb.state, code, &syms);
 
        sym = XKB_KEY_NoSymbol;