provide a way to remove all bindings

This commit is contained in:
Dana Jansens 2003-09-17 08:11:59 +00:00
parent ebe3091560
commit bdc10887cb
4 changed files with 18 additions and 11 deletions

View file

@ -98,6 +98,14 @@ void keyboard_reset_chains()
} }
} }
void keyboard_unbind_all()
{
tree_destroy(keyboard_firstnode);
keyboard_firstnode = NULL;
grab_keys(FALSE);
curpos = NULL;
}
gboolean keyboard_bind(GList *keylist, ObAction *action) gboolean keyboard_bind(GList *keylist, ObAction *action)
{ {
KeyBindingTree *tree, *t; KeyBindingTree *tree, *t;
@ -297,16 +305,13 @@ void keyboard_shutdown(gboolean reconfig)
if (!reconfig) if (!reconfig)
client_remove_destructor(keyboard_interactive_end_client); client_remove_destructor(keyboard_interactive_end_client);
tree_destroy(keyboard_firstnode);
keyboard_firstnode = NULL;
for (it = interactive_states; it; it = g_slist_next(it)) for (it = interactive_states; it; it = g_slist_next(it))
g_free(it->data); g_free(it->data);
g_slist_free(interactive_states); g_slist_free(interactive_states);
interactive_states = NULL; interactive_states = NULL;
ob_main_loop_timeout_remove(ob_main_loop, chain_timeout); ob_main_loop_timeout_remove(ob_main_loop, chain_timeout);
grab_keys(FALSE);
curpos = NULL; keyboard_unbind_all();
} }

View file

@ -34,6 +34,7 @@ void keyboard_startup(gboolean reconfig);
void keyboard_shutdown(gboolean reconfig); void keyboard_shutdown(gboolean reconfig);
gboolean keyboard_bind(GList *keylist, ObAction *action); gboolean keyboard_bind(GList *keylist, ObAction *action);
void keyboard_unbind_all();
void keyboard_event(struct _ObClient *client, const XEvent *e); void keyboard_event(struct _ObClient *client, const XEvent *e);
void keyboard_reset_chains(); void keyboard_reset_chains();

View file

@ -128,7 +128,7 @@ static void grab_all_clients(gboolean grab)
mouse_grab_for_client(it->data, grab); mouse_grab_for_client(it->data, grab);
} }
static void clearall() void mouse_unbind_all()
{ {
int i; int i;
GSList *it; GSList *it;
@ -295,8 +295,8 @@ void mouse_event(ObClient *client, XEvent *e)
} }
} }
gboolean mouse_bind(char *buttonstr, char *contextstr, ObMouseAction mact, gboolean mouse_bind(const gchar *buttonstr, const gchar *contextstr,
ObAction *action) ObMouseAction mact, ObAction *action)
{ {
guint state, button; guint state, button;
ObFrameContext context; ObFrameContext context;
@ -347,5 +347,5 @@ void mouse_startup(gboolean reconfig)
void mouse_shutdown(gboolean reconfig) void mouse_shutdown(gboolean reconfig)
{ {
grab_all_clients(FALSE); grab_all_clients(FALSE);
clearall(); mouse_unbind_all();
} }

View file

@ -28,8 +28,9 @@
void mouse_startup(gboolean reconfig); void mouse_startup(gboolean reconfig);
void mouse_shutdown(gboolean reconfig); void mouse_shutdown(gboolean reconfig);
gboolean mouse_bind(char *buttonstr, char *contextstr, ObMouseAction mact, gboolean mouse_bind(const gchar *buttonstr, const gchar *contextstr,
ObAction *action); ObMouseAction mact, ObAction *action);
void mouse_unbind_all();
void mouse_event(struct _ObClient *client, XEvent *e); void mouse_event(struct _ObClient *client, XEvent *e);