X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=openbox%2Fkeyboard.c;h=cef0dfd68364179545010102d024c43a8b416e56;hb=261d3193c5258126fda8234a3305180066f0f939;hp=37bff2711a5471167220b9904fd8518831e0e314;hpb=9d35b8c19865cb12c6bfb14c9879d3dfb52c3ac5;p=chaz%2Fopenbox diff --git a/openbox/keyboard.c b/openbox/keyboard.c index 37bff271..cef0dfd6 100644 --- a/openbox/keyboard.c +++ b/openbox/keyboard.c @@ -58,7 +58,7 @@ static void grab_keys(gboolean grab) grab_for_window(screen_support_win, grab); for (it = client_list; it; it = g_list_next(it)) - grab_for_window(((ObClient*)it->data)->frame->window, grab); + grab_for_window(((ObClient*)it->data)->window, grab); } static gboolean chain_timeout(gpointer data) @@ -186,12 +186,15 @@ gboolean keyboard_process_interactive_grab(const XEvent *e, s->action->func(&s->action->data); - grab_keyboard(FALSE); - grab_pointer(FALSE, OB_CURSOR_NONE); - keyboard_reset_chains(); - g_free(s); + interactive_states = g_slist_delete_link(interactive_states, it); + if (!interactive_states) { + grab_keyboard(FALSE); + grab_pointer(FALSE, OB_CURSOR_NONE); + keyboard_reset_chains(); + } + handled = TRUE; } }