diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2011-08-07 15:01:55 +0400 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2011-08-07 15:01:55 +0400 |
commit | a02d7c1ba76adbf3ff432111af4c3c81a0812c3a (patch) | |
tree | e45128b0144c3613d398e781ad0c9b12461e07ca /source/blender/windowmanager/intern/wm_keymap.c | |
parent | 38280ba38ed48d45e782e989a32b33510432d172 (diff) |
Fix #28169: keymap bug when using a preset configuration, e.g. object mode keymap
was also being used in edit mode.
Diffstat (limited to 'source/blender/windowmanager/intern/wm_keymap.c')
-rw-r--r-- | source/blender/windowmanager/intern/wm_keymap.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/source/blender/windowmanager/intern/wm_keymap.c b/source/blender/windowmanager/intern/wm_keymap.c index bf48f0e21e4..2fb0a1b2ab9 100644 --- a/source/blender/windowmanager/intern/wm_keymap.c +++ b/source/blender/windowmanager/intern/wm_keymap.c @@ -532,7 +532,7 @@ static void wm_keymap_patch(wmKeyMap *km, wmKeyMap *diff_km) } } -static void wm_keymap_patch_update(ListBase *lb, wmKeyMap *defaultmap, wmKeyMap *addonmap, wmKeyMap *usermap) +static wmKeyMap *wm_keymap_patch_update(ListBase *lb, wmKeyMap *defaultmap, wmKeyMap *addonmap, wmKeyMap *usermap) { wmKeyMap *km; int expanded = 0; @@ -552,8 +552,6 @@ static void wm_keymap_patch_update(ListBase *lb, wmKeyMap *defaultmap, wmKeyMap wmKeyMapItem *kmi, *orig_kmi; km = wm_keymap_copy(usermap); - km->modal_items = defaultmap->modal_items; - km->poll = defaultmap->poll; /* try to find corresponding id's for items */ for(kmi=km->items.first; kmi; kmi=kmi->next) { @@ -587,6 +585,8 @@ static void wm_keymap_patch_update(ListBase *lb, wmKeyMap *defaultmap, wmKeyMap /* add to list */ BLI_addtail(lb, km); + + return km; } static void wm_keymap_diff_update(ListBase *lb, wmKeyMap *defaultmap, wmKeyMap *addonmap, wmKeyMap *km) @@ -977,7 +977,7 @@ static wmKeyMap *wm_keymap_preset(wmWindowManager *wm, wmKeyMap *km) void WM_keyconfig_update(wmWindowManager *wm) { - wmKeyMap *km, *defaultmap, *addonmap, *usermap; + wmKeyMap *km, *defaultmap, *addonmap, *usermap, *kmn; wmKeyMapItem *kmi; wmKeyMapDiffItem *kmdi; int compat_update = 0; @@ -1021,7 +1021,12 @@ void WM_keyconfig_update(wmWindowManager *wm) usermap= WM_keymap_list_find(&U.user_keymaps, km->idname, km->spaceid, km->regionid); /* add */ - wm_keymap_patch_update(&wm->userconf->keymaps, defaultmap, addonmap, usermap); + kmn= wm_keymap_patch_update(&wm->userconf->keymaps, defaultmap, addonmap, usermap); + + if(kmn) { + kmn->modal_items= km->modal_items; + kmn->poll= km->poll; + } /* in case of old non-diff keymaps, force extra update to create diffs */ compat_update = compat_update || (usermap && !(usermap->flag & KEYMAP_DIFF)); |