keybindings: Generalize mechanism to generate dynamic keybinding actions

https://bugzilla.gnome.org/show_bug.cgi?id=643111
This commit is contained in:
Florian Müllner 2012-12-21 11:32:55 +01:00
parent 64c523c534
commit 4df3e987c6

View File

@ -542,6 +542,12 @@ display_get_keybinding (MetaDisplay *display,
return NULL; return NULL;
} }
static guint
next_dynamic_keybinding_action () {
static guint num_dynamic_bindings = 0;
return META_KEYBINDING_ACTION_LAST + (++num_dynamic_bindings);
}
static gboolean static gboolean
add_keybinding_internal (MetaDisplay *display, add_keybinding_internal (MetaDisplay *display,
const char *name, const char *name,
@ -622,14 +628,12 @@ meta_display_add_keybinding (MetaDisplay *display,
gpointer user_data, gpointer user_data,
GDestroyNotify free_data) GDestroyNotify free_data)
{ {
static guint num_dynamic_bindings = 0; guint new_action = next_dynamic_keybinding_action ();
guint new_action = META_KEYBINDING_ACTION_LAST + num_dynamic_bindings;
if (!add_keybinding_internal (display, name, settings, flags, new_action, if (!add_keybinding_internal (display, name, settings, flags, new_action,
handler, 0, user_data, free_data)) handler, 0, user_data, free_data))
return META_KEYBINDING_ACTION_NONE; return META_KEYBINDING_ACTION_NONE;
++num_dynamic_bindings;
return new_action; return new_action;
} }