/** * keybinder_unbind_all: * @keystring: an accelerator description (gtk_accelerator_parse() format) * * Unregister all previously bound callbacks for this keystring. * * Rename to: keybinder_unbind * * Since: 0.3.0 */ void keybinder_unbind_all (const char *keystring) { GSList *iter = bindings; for (iter = bindings; iter != NULL; iter = iter->next) { struct Binding *binding = iter->data; if (strcmp (keystring, binding->keystring) != 0) continue; do_ungrab_key (binding); bindings = g_slist_remove (bindings, binding); TRACE (g_print("unbind_all, notify: %p\n", binding->notify)); if (binding->notify) { binding->notify(binding->user_data); } g_free (binding->keystring); g_free (binding); /* re-start scan from head of new list */ iter = bindings; if (!iter) break; } }
static void keymap_changed (GdkKeymap *map) { GSList *iter; (void) map; TRACE (g_print ("Keymap changed! Regrabbing keys...")); for (iter = bindings; iter != NULL; iter = iter->next) { struct Binding *binding = iter->data; do_ungrab_key (binding); } for (iter = bindings; iter != NULL; iter = iter->next) { struct Binding *binding = iter->data; do_grab_key (binding); } }
static void keymap_changed (GdkKeymap *map) { GdkKeymap *keymap = gdk_keymap_get_default (); GSList *iter; TRACE (g_print ("Keymap changed! Regrabbing keys...")); for (iter = bindings; iter != NULL; iter = iter->next) { Binding *binding = (Binding *) iter->data; do_ungrab_key (binding); } lookup_ignorable_modifiers (keymap); for (iter = bindings; iter != NULL; iter = iter->next) { Binding *binding = (Binding *) iter->data; do_grab_key (binding); } }
void tomboy_keybinder_unbind (const char *keystring, TomboyBindkeyHandler handler) { GSList *iter; for (iter = bindings; iter != NULL; iter = iter->next) { Binding *binding = (Binding *) iter->data; if (strcmp (keystring, binding->keystring) != 0 || handler != binding->handler) continue; do_ungrab_key (binding); bindings = g_slist_remove (bindings, binding); g_free (binding->keystring); g_free (binding); break; } }
/** * keybinder_unbind: (skip) * @keystring: an accelerator description (gtk_accelerator_parse() format) * @handler: callback function * * Unregister a specific previously bound callback for this keystring. * * This function is excluded from introspected bindings and is replaced by * keybinder_unbind_all. */ void keybinder_unbind (const char *keystring, KeybinderHandler handler) { GSList *iter; for (iter = bindings; iter != NULL; iter = iter->next) { struct Binding *binding = iter->data; if (strcmp (keystring, binding->keystring) != 0 || handler != binding->handler) continue; do_ungrab_key (binding); bindings = g_slist_remove (bindings, binding); TRACE (g_print("unbind, notify: %p\n", binding->notify)); if (binding->notify) { binding->notify(binding->user_data); } g_free (binding->keystring); g_free (binding); break; } }