Grab key bindings with GrabModeSync, so that if they lead to a keyboard grab, then no keyboard events will be lost between the initial keybinding and the keyboard grab.
Dana Jansens danakj@orodu.net
2 files changed,
5 insertions(+),
3 deletions(-)
M
openbox/grab.c
→
openbox/grab.c
@@ -222,7 +222,7 @@ void ungrab_passive_key(void)
{ /*ob_debug("ungrabbing %d passive grabs\n", passive_count);*/ if (passive_count) { - /* kill out passive grab */ + /* kill our passive grab */ XUngrabKeyboard(ob_display, event_curtime); passive_count = 0; }
M
openbox/keyboard.c
→
openbox/keyboard.c
@@ -53,13 +53,13 @@ p = curpos ? curpos->first_child : keyboard_firstnode;
while (p) { if (p->key) grab_key(p->key, p->state, RootWindow(ob_display, ob_screen), - GrabModeAsync); + GrabModeSync); p = p->next_sibling; } if (curpos) grab_key(config_keyboard_reset_keycode, config_keyboard_reset_state, - RootWindow(ob_display, ob_screen), GrabModeAsync); + RootWindow(ob_display, ob_screen), GrabModeSync); } }@@ -263,6 +263,8 @@ break;
} p = p->next_sibling; } + + XAllowEvents(ob_display, AsyncKeyboard, event_curtime); } static void node_rebind(KeyBindingTree *node)