better handling of starting a new interactive grab while one is in progress
Dana Jansens danakj@orodu.net
1 files changed,
12 insertions(+),
6 deletions(-)
jump to
M
openbox/keyboard.c
→
openbox/keyboard.c
@@ -112,14 +112,20 @@
void keyboard_interactive_grab(guint state, ObClient *client, ObFrameContext context, ObAction *action) { - if (!interactive_grab && grab_keyboard(TRUE)) { + if (!interactive_grab) { + if (!grab_keyboard(TRUE)) + return; + if (!grab_pointer(TRUE, None)) { + grab_keyboard(FALSE); + return; + } interactive_grab = TRUE; - grabbed_state = state; - grabbed_client = client; - grabbed_action = action; - grabbed_context = context; - grab_pointer(TRUE, None); } + + grabbed_state = state; + grabbed_client = client; + grabbed_action = action; + grabbed_context = context; } gboolean keyboard_process_interactive_grab(const XEvent *e,