[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [25064] trunk/blender/source/blender: Reset operator properties for keymap items when operator idname is changed .

Martin Poirier theeth at yahoo.com
Wed Dec 2 05:12:16 CET 2009


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);





More information about the Bf-blender-cvs mailing list