Revision: 39126
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=39126
Author:   blendix
Date:     2011-08-07 11:01:55 +0000 (Sun, 07 Aug 2011)
Log Message:
-----------
Fix #28169: keymap bug when using a preset configuration, e.g. object mode 
keymap
was also being used in edit mode.

Modified Paths:
--------------
    trunk/blender/source/blender/windowmanager/intern/wm_keymap.c

Modified: trunk/blender/source/blender/windowmanager/intern/wm_keymap.c
===================================================================
--- trunk/blender/source/blender/windowmanager/intern/wm_keymap.c       
2011-08-07 10:29:43 UTC (rev 39125)
+++ trunk/blender/source/blender/windowmanager/intern/wm_keymap.c       
2011-08-07 11:01:55 UTC (rev 39126)
@@ -532,7 +532,7 @@
        }
 }
 
-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 @@
                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 @@
 
        /* 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 @@
 
 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,8 +1021,13 @@
                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));
        }

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to