keyboard.c for the Openbox window manager
Copyright (c) 2006 Mikael Magnusson
- Copyright (c) 2003 Ben Jansens
+ Copyright (c) 2003-2007 Dana Jansens
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
#include "keyboard.h"
#include "translate.h"
#include "moveresize.h"
+#include "gettext.h"
#include <glib.h>
}
}
-void keyboard_grab_for_client(ObClient *c, gboolean grab)
-{
- grab_for_window(c->window, grab);
-}
-
static void grab_keys(gboolean grab)
{
GList *it;
grab_for_window(screen_support_win, grab);
- for (it = client_list; it; it = g_list_next(it))
- grab_for_window(((ObClient*)it->data)->window, grab);
+ grab_for_window(RootWindow(ob_display, ob_screen), grab);
}
static gboolean chain_timeout(gpointer data)
t = tree;
if (conflict) {
- g_warning("conflict with binding");
+ g_message(_("Conflict with key binding in config file"));
tree_destroy(tree);
return FALSE;
}
g_assert(action->data.any.interactive);
if (!interactive_states) {
+ grab_pointer(TRUE, FALSE, OB_CURSOR_POINTER);
if (!grab_keyboard(TRUE)) {
- ob_debug("grab KEYBOARD failed\n");
+ grab_pointer(FALSE, FALSE, OB_CURSOR_NONE);
return FALSE;
}
}
if (!interactive_states) {
grab_keyboard(FALSE);
+ grab_pointer(FALSE, FALSE, OB_CURSOR_NONE);
keyboard_reset_chains();
}
}
done = TRUE;
else */if (e->xkey.keycode == ob_keycode(OB_KEY_ESCAPE))
cancel = done = TRUE;
- }
+ } else if (e->type == ButtonPress)
+ cancel = done = TRUE;
+
if (done) {
keyboard_interactive_end(s, e->xkey.state, cancel, e->xkey.time);