summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2008-02-18 15:55:59 -0500
committerDana Jansens <danakj@orodu.net>2008-02-18 20:42:35 -0500
commit5bfa48dcffec3b00d119d851cb2427a43f80aa7b (patch)
tree93c1c776e36d1b376241dbe1c5ccf1d4450b86d1
parent58788c781713092c6aa3a4544f8a06cd499ec4fd (diff)
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.
-rw-r--r--openbox/grab.c2
-rw-r--r--openbox/keyboard.c6
2 files changed, 5 insertions, 3 deletions
diff --git a/openbox/grab.c b/openbox/grab.c
index 43e9a815..214666e5 100644
--- a/openbox/grab.c
+++ b/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;
}
diff --git a/openbox/keyboard.c b/openbox/keyboard.c
index c23d83e6..c318a4cf 100644
--- a/openbox/keyboard.c
+++ b/openbox/keyboard.c
@@ -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)