all repos — openbox @ 5bfa48dcffec3b00d119d851cb2427a43f80aa7b

openbox fork - make it a bit more like ryudo

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
commit

5bfa48dcffec3b00d119d851cb2427a43f80aa7b

parent

58788c781713092c6aa3a4544f8a06cd499ec4fd

2 files changed, 5 insertions(+), 3 deletions(-)

jump to
M openbox/grab.copenbox/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.copenbox/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)