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.
This commit is contained in:
parent
58788c7817
commit
5bfa48dcff
2 changed files with 5 additions and 3 deletions
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -53,13 +53,13 @@ static void grab_keys(gboolean grab)
|
|||
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 @@ void keyboard_event(ObClient *client, const XEvent *e)
|
|||
}
|
||||
p = p->next_sibling;
|
||||
}
|
||||
|
||||
XAllowEvents(ob_display, AsyncKeyboard, event_curtime);
|
||||
}
|
||||
|
||||
static void node_rebind(KeyBindingTree *node)
|
||||
|
|
Loading…
Reference in a new issue