Revision: 25064
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=25064
Author:   theeth
Date:     2009-12-02 05:12:16 +0100 (Wed, 02 Dec 2009)

Log Message:
-----------
Reset operator properties for keymap items when operator idname is changed.

This means added operators in the keymap editor will now show options correctly 
(maybe not for old .B25.blend)

Modified Paths:
--------------
    trunk/blender/source/blender/makesrna/intern/rna_wm.c
    trunk/blender/source/blender/windowmanager/WM_api.h
    trunk/blender/source/blender/windowmanager/intern/wm_keymap.c

Modified: trunk/blender/source/blender/makesrna/intern/rna_wm.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_wm.c       2009-12-02 
04:07:40 UTC (rev 25063)
+++ trunk/blender/source/blender/makesrna/intern/rna_wm.c       2009-12-02 
04:12:16 UTC (rev 25064)
@@ -255,6 +255,8 @@
 
 #include "BKE_idprop.h"
 
+#include "MEM_guardedalloc.h"
+
 static wmOperator *rna_OperatorProperties_find_operator(PointerRNA *ptr)
 {
        wmWindowManager *wm= ptr->id.data;
@@ -558,6 +560,8 @@
 
        WM_operator_bl_idname(idname, value);
        BLI_strncpy(kmi->idname, idname, sizeof(kmi->idname));
+
+       WM_keymap_properties_reset(kmi);
 }
 
 #else

Modified: trunk/blender/source/blender/windowmanager/WM_api.h
===================================================================
--- trunk/blender/source/blender/windowmanager/WM_api.h 2009-12-02 04:07:40 UTC 
(rev 25063)
+++ trunk/blender/source/blender/windowmanager/WM_api.h 2009-12-02 04:12:16 UTC 
(rev 25064)
@@ -112,6 +112,7 @@
 int                     WM_keymap_user_init(struct wmWindowManager *wm, struct 
wmKeyMap *keymap);
 wmKeyMap       *WM_keymap_copy_to_user(struct wmKeyMap *keymap);
 void           WM_keymap_restore_to_default(struct wmKeyMap *keymap);
+void           WM_keymap_properties_reset(struct wmKeyMapItem *kmi);
 
 wmKeyMap       *WM_modalkeymap_add(struct wmKeyConfig *keyconf, char *idname, 
struct EnumPropertyItem *items);
 wmKeyMap       *WM_modalkeymap_get(struct wmKeyConfig *keyconf, char *idname);

Modified: trunk/blender/source/blender/windowmanager/intern/wm_keymap.c
===================================================================
--- trunk/blender/source/blender/windowmanager/intern/wm_keymap.c       
2009-12-02 04:07:40 UTC (rev 25063)
+++ trunk/blender/source/blender/windowmanager/intern/wm_keymap.c       
2009-12-02 04:12:16 UTC (rev 25064)
@@ -55,6 +55,17 @@
 
 /* ********************* key config ***********************/
 
+void WM_keymap_properties_reset(wmKeyMapItem *kmi)
+{
+       WM_operator_properties_free(kmi->ptr);
+       MEM_freeN(kmi->ptr);
+
+       kmi->ptr = NULL;
+       kmi->properties = NULL;
+
+       WM_operator_properties_alloc(&(kmi->ptr), &(kmi->properties), 
kmi->idname);
+}
+
 static void keymap_properties_set(wmKeyMapItem *kmi)
 {
        WM_operator_properties_alloc(&(kmi->ptr), &(kmi->properties), 
kmi->idname);


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

Reply via email to