Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2018-11-23 07:16:13 +0300
committerCampbell Barton <ideasman42@gmail.com>2018-11-23 07:16:13 +0300
commitcfffe615f4794606fc2b7a1bdb148714e3c6e158 (patch)
tree3b43019ff5d9813c1e2c8e0707e0bebe508c8130 /source/blender/windowmanager
parent1fcb3e791f320563a997c83c3ea3063b606f17b8 (diff)
Keymap: add Keymap.keymap_items.new_from_item
Needed to copy keymap items from other keymaps.
Diffstat (limited to 'source/blender/windowmanager')
-rw-r--r--source/blender/windowmanager/WM_keymap.h2
-rw-r--r--source/blender/windowmanager/intern/wm_keymap.c14
2 files changed, 16 insertions, 0 deletions
diff --git a/source/blender/windowmanager/WM_keymap.h b/source/blender/windowmanager/WM_keymap.h
index 2093a29ba33..0e8a468192c 100644
--- a/source/blender/windowmanager/WM_keymap.h
+++ b/source/blender/windowmanager/WM_keymap.h
@@ -67,6 +67,8 @@ wmKeyMapItem *WM_keymap_verify_item(
wmKeyMapItem *WM_keymap_add_item(
struct wmKeyMap *keymap, const char *idname, int type,
int val, int modifier, int keymodifier);
+wmKeyMapItem *WM_keymap_add_item_copy(
+ struct wmKeyMap *keymap, wmKeyMapItem *kmi_src);
bool WM_keymap_remove_item(struct wmKeyMap *keymap, struct wmKeyMapItem *kmi);
int WM_keymap_item_to_string(wmKeyMapItem *kmi, const bool compact, char *result, const int result_len);
diff --git a/source/blender/windowmanager/intern/wm_keymap.c b/source/blender/windowmanager/intern/wm_keymap.c
index 4032f47eec2..27c816a4d7d 100644
--- a/source/blender/windowmanager/intern/wm_keymap.c
+++ b/source/blender/windowmanager/intern/wm_keymap.c
@@ -513,6 +513,20 @@ wmKeyMapItem *WM_keymap_add_item(wmKeyMap *keymap, const char *idname, int type,
return kmi;
}
+wmKeyMapItem *WM_keymap_add_item_copy(
+ struct wmKeyMap *keymap, wmKeyMapItem *kmi_src)
+{
+ wmKeyMapItem *kmi_dst = wm_keymap_item_copy(kmi_src);
+
+ BLI_addtail(&keymap->items, kmi_dst);
+
+ keymap_item_set_id(keymap, kmi_dst);
+
+ WM_keyconfig_update_tag(keymap, kmi_dst);
+
+ return kmi_dst;
+}
+
bool WM_keymap_remove_item(wmKeyMap *keymap, wmKeyMapItem *kmi)
{
if (BLI_findindex(&keymap->items, kmi) != -1) {