Commit: e511c7a34ef6f1545f8e6537e50d4b3b937936ef
Author: Campbell Barton
Date:   Wed Mar 9 17:33:38 2016 +1100
Branches: blender-v2.77-release
https://developer.blender.org/rBe511c7a34ef6f1545f8e6537e50d4b3b937936ef

Fix/workaround T47685: Drag keymap slider fails

This is a special case where the UI update function re-creases the keymap we're 
currently editing.
Making it so dragging values fails.

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

M       source/blender/editors/include/UI_interface.h
M       source/blender/editors/interface/interface_handlers.c
M       source/blender/editors/interface/interface_templates.c

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

diff --git a/source/blender/editors/include/UI_interface.h 
b/source/blender/editors/include/UI_interface.h
index 11dc88d..2363509 100644
--- a/source/blender/editors/include/UI_interface.h
+++ b/source/blender/editors/include/UI_interface.h
@@ -181,6 +181,7 @@ enum {
        UI_BUT_TIP_FORCE       = (1 << 28),  /* force show tooltips when 
holding option/alt if U's USER_TOOLTIPS is off */
        UI_BUT_TEXTEDIT_UPDATE = (1 << 29),  /* when widget is in textedit 
mode, update value on each char stroke */
        UI_BUT_SEARCH_UNLINK   = (1 << 30),  /* show unlink for search button */
+       UI_BUT_UPDATE_DELAY    = (1 << 31),  /* don't run updates while 
dragging (needed in rare cases). */
 };
 
 #define UI_PANEL_WIDTH          340
diff --git a/source/blender/editors/interface/interface_handlers.c 
b/source/blender/editors/interface/interface_handlers.c
index 0ae5057..8614fba 100644
--- a/source/blender/editors/interface/interface_handlers.c
+++ b/source/blender/editors/interface/interface_handlers.c
@@ -7769,7 +7769,9 @@ static void button_activate_init(bContext *C, ARegion 
*ar, uiBut *but, uiButtonA
                /* XXX curve is temp */
        }
        else {
-               data->interactive = true;
+               if ((but->flag & UI_BUT_UPDATE_DELAY) == 0) {
+                       data->interactive = true;
+               }
        }
        
        data->state = BUTTON_STATE_INIT;
diff --git a/source/blender/editors/interface/interface_templates.c 
b/source/blender/editors/interface/interface_templates.c
index e3a749d..1bff2dd 100644
--- a/source/blender/editors/interface/interface_templates.c
+++ b/source/blender/editors/interface/interface_templates.c
@@ -3662,6 +3662,9 @@ void uiTemplateKeymapItemProperties(uiLayout *layout, 
PointerRNA *ptr)
                        /* operator buttons may store props for use (file 
selector, [#36492]) */
                        if (but->rnaprop) {
                                UI_but_func_set(but, keymap_item_modified, 
ptr->data, NULL);
+
+                               /* Otherwise the keymap will be re-generated 
which we're trying to edit, see: T47685 */
+                               UI_but_flag_enable(but, UI_BUT_UPDATE_DELAY);
                        }
                }
        }

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

Reply via email to