[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [32983] trunk/blender/source/blender: bugfix [#24635] "Add Shortcut"

Campbell Barton ideasman42 at gmail.com
Wed Nov 10 12:19:52 CET 2010


Revision: 32983
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=32983
Author:   campbellbarton
Date:     2010-11-10 12:19:52 +0100 (Wed, 10 Nov 2010)

Log Message:
-----------
bugfix [#24635] "Add Shortcut"

Modified Paths:
--------------
    trunk/blender/source/blender/editors/interface/interface_handlers.c
    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
    trunk/blender/source/blender/windowmanager/intern/wm_operators.c

Modified: trunk/blender/source/blender/editors/interface/interface_handlers.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_handlers.c	2010-11-10 10:21:14 UTC (rev 32982)
+++ trunk/blender/source/blender/editors/interface/interface_handlers.c	2010-11-10 11:19:52 UTC (rev 32983)
@@ -4031,12 +4031,16 @@
 	
 	km = WM_keymap_guess_opname(C, but->optype->idname);		
 	kmi = WM_keymap_add_item(km, but->optype->idname, AKEY, KM_PRESS, 0, 0);
-	MEM_freeN(kmi->properties);
-	if (prop)
-		kmi->properties= IDP_CopyProperty(prop);
-	
+
+	if (prop) {
+		prop= IDP_CopyProperty(prop);
+	}
+
+	/* prop can be NULL */	
+	WM_keymap_properties_reset(kmi, prop);
+
 	RNA_pointer_create(NULL, &RNA_KeyMapItem, kmi, &ptr);
-	
+
 	block= uiBeginBlock(C, ar, "_popup", UI_EMBOSS);
 	uiBlockSetHandleFunc(block, but_shortcut_name_func, but);
 	uiBlockSetFlag(block, UI_BLOCK_RET_1);

Modified: trunk/blender/source/blender/makesrna/intern/rna_wm.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_wm.c	2010-11-10 10:21:14 UTC (rev 32982)
+++ trunk/blender/source/blender/makesrna/intern/rna_wm.c	2010-11-10 11:19:52 UTC (rev 32983)
@@ -588,7 +588,7 @@
 	if(strcmp(idname, kmi->idname) != 0) {
 		BLI_strncpy(kmi->idname, idname, sizeof(kmi->idname));
 
-		WM_keymap_properties_reset(kmi);
+		WM_keymap_properties_reset(kmi, NULL);
 	}
 }
 

Modified: trunk/blender/source/blender/windowmanager/WM_api.h
===================================================================
--- trunk/blender/source/blender/windowmanager/WM_api.h	2010-11-10 10:21:14 UTC (rev 32982)
+++ trunk/blender/source/blender/windowmanager/WM_api.h	2010-11-10 11:19:52 UTC (rev 32983)
@@ -130,7 +130,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);
+void		WM_keymap_properties_reset(struct wmKeyMapItem *kmi, struct IDProperty *properties);
 void		WM_keymap_restore_item_to_default(struct bContext *C, struct wmKeyMap *keymap, struct wmKeyMapItem *kmi);
 
 wmKeyMapItem *WM_keymap_item_find_id(struct wmKeyMap *keymap, int id);

Modified: trunk/blender/source/blender/windowmanager/intern/wm_keymap.c
===================================================================
--- trunk/blender/source/blender/windowmanager/intern/wm_keymap.c	2010-11-10 10:21:14 UTC (rev 32982)
+++ trunk/blender/source/blender/windowmanager/intern/wm_keymap.c	2010-11-10 11:19:52 UTC (rev 32983)
@@ -63,13 +63,14 @@
 	WM_operator_properties_sanitize(kmi->ptr, 1);
 }
 
-void WM_keymap_properties_reset(wmKeyMapItem *kmi)
+/* properties can be NULL, otherwise the arg passed is used and ownership is given to the kmi */
+void WM_keymap_properties_reset(wmKeyMapItem *kmi, struct IDProperty *properties)
 {
 	WM_operator_properties_free(kmi->ptr);
 	MEM_freeN(kmi->ptr);
 
 	kmi->ptr = NULL;
-	kmi->properties = NULL;
+	kmi->properties = properties;
 
 	keymap_properties_set(kmi);
 }
@@ -706,7 +707,7 @@
 			if(strcmp(orig->idname, kmi->idname) != 0) {
 				BLI_strncpy(kmi->idname, orig->idname, sizeof(kmi->idname));
 
-				WM_keymap_properties_reset(kmi);
+				WM_keymap_properties_reset(kmi, NULL);
 			}
 			
 			if (orig->properties) {

Modified: trunk/blender/source/blender/windowmanager/intern/wm_operators.c
===================================================================
--- trunk/blender/source/blender/windowmanager/intern/wm_operators.c	2010-11-10 10:21:14 UTC (rev 32982)
+++ trunk/blender/source/blender/windowmanager/intern/wm_operators.c	2010-11-10 11:19:52 UTC (rev 32983)
@@ -617,6 +617,7 @@
 	if(properties) {
 		IDP_FreeProperty(properties);
 		MEM_freeN(properties);
+		ptr->data= NULL; /* just incase */
 	}
 }
 





More information about the Bf-blender-cvs mailing list