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>2020-09-04 22:18:45 +0300
committerJulian Eisel <julian@blender.org>2020-09-04 22:26:31 +0300
commite6f0b60c2e9111af1878d31dcc295c59ed1bea77 (patch)
tree4df10fc869f5f512c233a2755246c1749bafc1c7 /source/blender/editors/interface/interface_layout.c
parent47881791be0538f9558b2ef091e1761187df250d (diff)
UI Code Quality: Use derived struct for number buttons
For the man rationale behind this design, see 49f088e2d093. Further, this removes users of uiBut.a1/uiBut.a2, which is a very ugly design choice (hard to reason about). Note that I had to do rather ugly, specific exceptions for the number buttons in `ui_def_but_rna()`. But once all users of a1/a2 are removed, this special handling shouldn't be needed anymore. I also had to move a sanity check out of the button definition. It's now moved into a new debug only sanity checking function executed when finishing the layout definition (block end).
Diffstat (limited to 'source/blender/editors/interface/interface_layout.c')
-rw-r--r--source/blender/editors/interface/interface_layout.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/source/blender/editors/interface/interface_layout.c b/source/blender/editors/interface/interface_layout.c
index 7b4bb067eb8..f27714324fc 100644
--- a/source/blender/editors/interface/interface_layout.c
+++ b/source/blender/editors/interface/interface_layout.c
@@ -629,7 +629,10 @@ static void ui_item_array(uiLayout *layout,
w,
UI_UNIT_Y);
if (slider && but->type == UI_BTYPE_NUM) {
- but->type = UI_BTYPE_NUM_SLIDER;
+ uiButNumber *number_but = (uiButNumber *)but;
+
+ but->a1 = number_but->step_size;
+ ui_but_change_type(but, UI_BTYPE_NUM_SLIDER);
}
}
}
@@ -697,7 +700,10 @@ static void ui_item_array(uiLayout *layout,
but = uiDefAutoButR(block, ptr, prop, a, str_buf, icon, 0, 0, width_item, UI_UNIT_Y);
if (slider && but->type == UI_BTYPE_NUM) {
- but->type = UI_BTYPE_NUM_SLIDER;
+ uiButNumber *number_but = (uiButNumber *)but;
+
+ but->a1 = number_but->step_size;
+ ui_but_change_type(but, UI_BTYPE_NUM_SLIDER);
}
if ((toggle == 1) && but->type == UI_BTYPE_CHECKBOX) {
but->type = UI_BTYPE_TOGGLE;
@@ -2290,7 +2296,10 @@ void uiItemFullR(uiLayout *layout,
but = uiDefAutoButR(block, ptr, prop, index, name, icon, 0, 0, w, h);
if (slider && but->type == UI_BTYPE_NUM) {
- but->type = UI_BTYPE_NUM_SLIDER;
+ uiButNumber *num_but = (uiButNumber *)but;
+
+ but->a1 = num_but->step_size;
+ ui_but_change_type(but, UI_BTYPE_NUM_SLIDER);
}
if (flag & UI_ITEM_R_CHECKBOX_INVERT) {