[Bf-blender-cvs] [42959f0] master: Fix T40759: "Add Shortcut" operator was leaving new keymap items on cancel.

Lukas Tönne noreply at git.blender.org
Wed Jun 25 17:49:10 CEST 2014


Commit: 42959f05a467028e4b8835e495ceb604eb7ea1d7
Author: Lukas Tönne
Date:   Wed Jun 25 17:40:51 2014 +0200
https://developer.blender.org/rB42959f05a467028e4b8835e495ceb604eb7ea1d7

Fix T40759: "Add Shortcut" operator was leaving new keymap items on
cancel.

===================================================================

M	source/blender/editors/interface/interface_handlers.c

===================================================================

diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c
index 9189f14..e04fef3 100644
--- a/source/blender/editors/interface/interface_handlers.c
+++ b/source/blender/editors/interface/interface_handlers.c
@@ -5564,6 +5564,18 @@ static uiBlock *menu_add_shortcut(bContext *C, ARegion *ar, void *arg)
 	return block;
 }
 
+static void menu_add_shortcut_cancel(struct bContext *C, void *arg1)
+{
+	uiBut *but = (uiBut *)arg1;
+	wmKeyMap *km;
+	wmKeyMapItem *kmi;
+	IDProperty *prop = (but->opptr) ? but->opptr->data : NULL;
+	int kmi_id = WM_key_event_operator_id(C, but->optype->idname, but->opcontext, prop, true, &km);
+	
+	kmi = WM_keymap_item_find_id(km, kmi_id);
+	WM_keymap_remove_item(km, kmi);
+}
+
 static void popup_change_shortcut_func(bContext *C, void *arg1, void *UNUSED(arg2))
 {
 	uiBut *but = (uiBut *)arg1;
@@ -5589,7 +5601,7 @@ static void popup_add_shortcut_func(bContext *C, void *arg1, void *UNUSED(arg2))
 {
 	uiBut *but = (uiBut *)arg1;
 	button_timers_tooltip_remove(C, but);
-	uiPupBlock(C, menu_add_shortcut, but);
+	uiPupBlockEx(C, menu_add_shortcut, NULL, menu_add_shortcut_cancel, but);
 }
 
 /**




More information about the Bf-blender-cvs mailing list