- Timestamp:
- Jun 25, 2011, 3:26:15 AM (13 years ago)
- Branches:
- master, release-1.10, release-1.8, release-1.9
- Children:
- d191f45
- Parents:
- f9df2f0
- git-author:
- David Benjamin <davidben@mit.edu> (03/10/11 15:02:58)
- git-committer:
- David Benjamin <davidben@mit.edu> (06/25/11 03:26:15)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
keymap.c
r6829afc re4d7cb6 11 11 km->name = g_strdup(name); 12 12 km->desc = g_strdup(desc); 13 owl_list_create(&km->bindings);13 km->bindings = g_ptr_array_new(); 14 14 km->parent = NULL; 15 15 km->default_fn = default_fn; … … 24 24 g_free(km->name); 25 25 g_free(km->desc); 26 owl_list_cleanup(&km->bindings, (void (*)(void *))owl_keybinding_delete); 26 g_ptr_array_foreach(km->bindings, (GFunc)owl_keybinding_delete, NULL); 27 g_ptr_array_free(km->bindings, true); 27 28 } 28 29 … … 35 36 int owl_keymap_create_binding(owl_keymap *km, const char *keyseq, const char *command, void (*function_fn)(void), const char *desc) 36 37 { 37 owl_keybinding *kb , *curkb;38 owl_keybinding *kb; 38 39 int i; 39 40 … … 44 45 * otherwise just add this one. 45 46 */ 46 for (i = owl_list_get_size(&km->bindings)-1; i>=0; i--) { 47 curkb = owl_list_get_element(&km->bindings, i); 48 if (owl_keybinding_equal(curkb, kb)) { 49 owl_list_remove_element(&km->bindings, i); 50 owl_keybinding_delete(curkb); 51 } 52 } 53 owl_list_append_element(&km->bindings, kb); 47 for (i = km->bindings->len-1; i >= 0; i--) { 48 if (owl_keybinding_equal(km->bindings->pdata[i], kb)) { 49 owl_keybinding_delete(g_ptr_array_remove_index(km->bindings, i)); 50 } 51 } 52 g_ptr_array_add(km->bindings, kb); 54 53 return 0; 55 54 } … … 58 57 int owl_keymap_remove_binding(owl_keymap *km, const char *keyseq) 59 58 { 60 owl_keybinding *kb , *curkb;59 owl_keybinding *kb; 61 60 int i; 62 61 … … 65 64 return -1; 66 65 67 for (i = owl_list_get_size(&km->bindings)-1; i >= 0; i--) { 68 curkb = owl_list_get_element(&km->bindings, i); 69 if (owl_keybinding_equal(curkb, kb)) { 70 owl_list_remove_element(&km->bindings, i); 71 owl_keybinding_delete(curkb); 66 for (i = km->bindings->len-1; i >= 0; i--) { 67 if (owl_keybinding_equal(km->bindings->pdata[i], kb)) { 68 owl_keybinding_delete(g_ptr_array_remove_index(km->bindings, i)); 72 69 owl_keybinding_delete(kb); 73 70 return(0); … … 139 136 static void _owl_keymap_format_bindings(const owl_keymap *km, owl_fmtext *fm) 140 137 { 141 int i , nbindings;138 int i; 142 139 const owl_keybinding *kb; 143 140 144 nbindings = owl_list_get_size(&km->bindings); 145 for (i=0; i<nbindings; i++) { 141 for (i = 0; i < km->bindings->len; i++) { 146 142 char *kbstr; 147 143 const owl_cmd *cmd; 148 144 const char *tmpdesc, *desc = ""; 149 145 150 kb = owl_list_get_element(&km->bindings, i);146 kb = km->bindings->pdata[i]; 151 147 kbstr = owl_keybinding_tostring(kb); 152 148 owl_fmtext_append_normal(fm, OWL_TABSTR); … … 274 270 * keyhandler and keymap apart. */ 275 271 for (km=kh->active; km; km=km->parent) { 276 for (i =owl_list_get_size(&km->bindings)-1; i>=0; i--) {277 kb = owl_list_get_element(&km->bindings, i);272 for (i = km->bindings->len-1; i >= 0; i--) { 273 kb = km->bindings->pdata[i]; 278 274 match = owl_keybinding_match(kb, kh); 279 275 if (match == 1) { /* subset match */
Note: See TracChangeset
for help on using the changeset viewer.