diff options
author | Dalai Felinto <dfelinto@gmail.com> | 2013-09-27 18:05:07 +0400 |
---|---|---|
committer | Dalai Felinto <dfelinto@gmail.com> | 2013-09-27 18:05:07 +0400 |
commit | c2afa5cfaf4034f07ff0336991ceeda29014c75e (patch) | |
tree | 81d26322fee0742920ba3c781e666bc7f8882455 /source/blender/windowmanager | |
parent | 60e1fc70d28594920dcbaa9c41e9d532211e8073 (diff) |
rna: implementing function to remove keymap from keyconfig
Thanks Campbell Barton for reviewing.
Diffstat (limited to 'source/blender/windowmanager')
-rw-r--r-- | source/blender/windowmanager/WM_keymap.h | 1 | ||||
-rw-r--r-- | source/blender/windowmanager/intern/wm_keymap.c | 15 |
2 files changed, 16 insertions, 0 deletions
diff --git a/source/blender/windowmanager/WM_keymap.h b/source/blender/windowmanager/WM_keymap.h index cebafcea12d..49e9b4fd445 100644 --- a/source/blender/windowmanager/WM_keymap.h +++ b/source/blender/windowmanager/WM_keymap.h @@ -72,6 +72,7 @@ wmKeyMap *WM_keymap_find(struct wmKeyConfig *keyconf, const char *idname, int sp wmKeyMap *WM_keymap_find_all(const struct bContext *C, const char *idname, int spaceid, int regionid); wmKeyMap *WM_keymap_active(struct wmWindowManager *wm, struct wmKeyMap *keymap); wmKeyMap *WM_keymap_guess_opname(const struct bContext *C, const char *opname); +int WM_keymap_remove(struct wmKeyConfig *keyconfig, struct wmKeyMap *keymap); wmKeyMapItem *WM_keymap_item_find_id(struct wmKeyMap *keymap, int id); int WM_keymap_item_compare(struct wmKeyMapItem *k1, struct wmKeyMapItem *k2); diff --git a/source/blender/windowmanager/intern/wm_keymap.c b/source/blender/windowmanager/intern/wm_keymap.c index 7ba9316fd84..1b3ef890299 100644 --- a/source/blender/windowmanager/intern/wm_keymap.c +++ b/source/blender/windowmanager/intern/wm_keymap.c @@ -299,6 +299,21 @@ void WM_keymap_free(wmKeyMap *keymap) BLI_freelistN(&keymap->items); } +int WM_keymap_remove(wmKeyConfig *keyconf, wmKeyMap *keymap) +{ + if (BLI_findindex(&keyconf->keymaps, keymap) != -1) { + + WM_keymap_free(keymap); + BLI_remlink(&keyconf->keymaps, keymap); + MEM_freeN(keymap); + + return TRUE; + } + else { + return FALSE; + } +} + static void keymap_event_set(wmKeyMapItem *kmi, short type, short val, int modifier, short keymodifier) { kmi->type = type; |