diff options
author | Campbell Barton <ideasman42@gmail.com> | 2016-03-09 09:33:38 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2016-03-18 13:44:24 +0300 |
commit | e511c7a34ef6f1545f8e6537e50d4b3b937936ef (patch) | |
tree | 90a1e3b9ec317b48fec8cbf79bdb9962c7a12071 | |
parent | 3d1f050608bd88d73b2d05e3746bdd7506a354d4 (diff) |
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.
-rw-r--r-- | source/blender/editors/include/UI_interface.h | 1 | ||||
-rw-r--r-- | source/blender/editors/interface/interface_handlers.c | 4 | ||||
-rw-r--r-- | source/blender/editors/interface/interface_templates.c | 3 |
3 files changed, 7 insertions, 1 deletions
diff --git a/source/blender/editors/include/UI_interface.h b/source/blender/editors/include/UI_interface.h index 11dc88d615d..23635096f0f 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 0ae505777a9..8614fbad8b5 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 e3a749d34f8..1bff2dd7af2 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); } } } |