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:
authorBrecht Van Lommel <brechtvanlommel@pandora.be>2011-08-07 15:01:55 +0400
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2011-08-07 15:01:55 +0400
commita02d7c1ba76adbf3ff432111af4c3c81a0812c3a (patch)
treee45128b0144c3613d398e781ad0c9b12461e07ca /source/blender/windowmanager
parent38280ba38ed48d45e782e989a32b33510432d172 (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')
-rw-r--r--source/blender/windowmanager/intern/wm_keymap.c15
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));