Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2016-03-09 09:33:38 +0300
committerCampbell Barton <ideasman42@gmail.com>2016-03-09 09:41:43 +0300
commit01d3afaf3dec8c77c7c4de9f25ed50931ecd49a0 (patch)
tree62d67327988ad645b4c9fb55a97b94b45ad01340 /source/blender/editors
parentd36dbe8a6deb85ad9878a5d074586d460a4499c1 (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.
Diffstat (limited to 'source/blender/editors')
-rw-r--r--source/blender/editors/include/UI_interface.h1
-rw-r--r--source/blender/editors/interface/interface_handlers.c4
-rw-r--r--source/blender/editors/interface/interface_templates.c3
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 0f0e40850cc..89c50a46c70 100644
--- a/source/blender/editors/include/UI_interface.h
+++ b/source/blender/editors/include/UI_interface.h
@@ -182,6 +182,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 e6af3e36c1f..bccecdee056 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 af3080d39c4..7bc9beaddb7 100644
--- a/source/blender/editors/interface/interface_templates.c
+++ b/source/blender/editors/interface/interface_templates.c
@@ -3668,6 +3668,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);
}
}
}