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:
authorJulian Eisel <julian@blender.org>2021-02-18 18:33:00 +0300
committerJulian Eisel <julian@blender.org>2021-02-18 19:17:48 +0300
commit81ac0bf759d34e7de921784250d82540cb218718 (patch)
treea0f6d67d3dab6785731d849aba40510f379cdaf5 /source/blender/editors/interface/interface_ops.c
parentafa5da9ce02bcd46f70d250943a933afe6de1d59 (diff)
Fix failing "Edit Source" (asserts) while number slider was visible
E.g. steps to reproduce: * Enter Vertex Paint mode * In the tool settings, right-click > "Edit Source" When creating a number slider via `layout.prop(..., slider=True)`, the UI code would reallocate the number button to be a number-slider button. That's because we now actually have different button data-structures for these (see e6f0b60c2e911). The edit source code stored data based on the button pointers, which didn't get updated after changing the type. The fix just adds this updating.
Diffstat (limited to 'source/blender/editors/interface/interface_ops.c')
-rw-r--r--source/blender/editors/interface/interface_ops.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/source/blender/editors/interface/interface_ops.c b/source/blender/editors/interface/interface_ops.c
index 05a2a6ef29b..540e98f542e 100644
--- a/source/blender/editors/interface/interface_ops.c
+++ b/source/blender/editors/interface/interface_ops.c
@@ -1296,6 +1296,19 @@ void UI_editsource_active_but_test(uiBut *but)
BLI_ghash_insert(ui_editsource_info->hash, but, but_store);
}
+/**
+ * Remove the editsource data for \a old_but and reinsert it for \a new_but. Use when the button
+ * was reallocated, e.g. to have a new type (#ui_but_change_type()).
+ */
+void UI_editsource_but_replace(const uiBut *old_but, uiBut *new_but)
+{
+ uiEditSourceButStore *but_store = BLI_ghash_lookup(ui_editsource_info->hash, old_but);
+ if (but_store) {
+ BLI_ghash_remove(ui_editsource_info->hash, old_but, NULL, NULL);
+ BLI_ghash_insert(ui_editsource_info->hash, new_but, but_store);
+ }
+}
+
static int editsource_text_edit(bContext *C,
wmOperator *op,
const char filepath[FILE_MAX],