/* removes the binding associated with the keymap */ int owl_keymap_remove_binding(owl_keymap *km, const char *keyseq) { owl_keybinding *kb; int i; kb = owl_keybinding_new(keyseq, NULL, NULL, NULL); if (kb == NULL) return -1; for (i = km->bindings->len-1; i >= 0; i--) { if (owl_keybinding_equal(km->bindings->pdata[i], kb)) { owl_keybinding_delete(g_ptr_array_remove_index(km->bindings, i)); owl_keybinding_delete(kb); return(0); } } owl_keybinding_delete(kb); return(-2); }
/* removes the binding associated with the keymap */ int owl_keymap_remove_binding(owl_keymap *km, const char *keyseq) { owl_keybinding *kb, *curkb; int i; kb = owl_keybinding_new(keyseq, NULL, NULL, NULL); if (kb == NULL) return -1; for (i = owl_list_get_size(&km->bindings)-1; i >= 0; i--) { curkb = owl_list_get_element(&km->bindings, i); if (owl_keybinding_equal(curkb, kb)) { owl_list_remove_element(&km->bindings, i); owl_keybinding_delete(curkb); owl_keybinding_delete(kb); return(0); } } owl_keybinding_delete(kb); return(-2); }
/* creates and adds a key binding */ int owl_keymap_create_binding(owl_keymap *km, const char *keyseq, const char *command, void (*function_fn)(void), const char *desc) { owl_keybinding *kb; int i; kb = owl_keybinding_new(keyseq, command, function_fn, desc); if (kb == NULL) return -1; /* see if another matching binding, and if so remove it. * otherwise just add this one. */ for (i = km->bindings->len-1; i >= 0; i--) { if (owl_keybinding_equal(km->bindings->pdata[i], kb)) { owl_keybinding_delete(g_ptr_array_remove_index(km->bindings, i)); } } g_ptr_array_add(km->bindings, kb); return 0; }
/* creates and adds a key binding */ int owl_keymap_create_binding(owl_keymap *km, const char *keyseq, const char *command, void (*function_fn)(void), const char *desc) { owl_keybinding *kb, *curkb; int i; kb = owl_keybinding_new(keyseq, command, function_fn, desc); if (kb == NULL) return -1; /* see if another matching binding, and if so remove it. * otherwise just add this one. */ for (i = owl_list_get_size(&km->bindings)-1; i>=0; i--) { curkb = owl_list_get_element(&km->bindings, i); if (owl_keybinding_equal(curkb, kb)) { owl_list_remove_element(&km->bindings, i); owl_keybinding_delete(curkb); } } return owl_list_append_element(&km->bindings, kb); }