[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