Fix: UI: Small layout glitch with search template and decorators
Button layout wouldn't be entirely correct with split layout was enabled, but decorators disabled (`uiLayout.use_property_split = True`, `uiLayout.use_property_decorate = False`). See https://projects.blender.org/blender/blender/pulls/127751#issuecomment-1298468.
This commit is contained in:
@@ -3059,6 +3059,9 @@ void uiItemsFullEnumO_items(uiLayout *layout,
|
||||
struct uiPropertySplitWrapper {
|
||||
uiLayout *label_column;
|
||||
uiLayout *property_row;
|
||||
/**
|
||||
* Column for decorators. Note that this may be null, see #uiItemPropertySplitWrapperCreate().
|
||||
*/
|
||||
uiLayout *decorate_column;
|
||||
};
|
||||
|
||||
@@ -3066,6 +3069,9 @@ struct uiPropertySplitWrapper {
|
||||
* Normally, we handle the split layout in #uiItemFullR(), but there are other cases where the
|
||||
* logic is needed. Ideally, #uiItemFullR() could just call this, but it currently has too many
|
||||
* special needs.
|
||||
*
|
||||
* The returned #uiPropertySplitWrapper.decorator_column may be null when decorators are disabled
|
||||
* (#uiLayoutGetPropDecorate() returns false).
|
||||
*/
|
||||
uiPropertySplitWrapper uiItemPropertySplitWrapperCreate(uiLayout *parent_layout);
|
||||
|
||||
|
||||
@@ -3336,7 +3336,9 @@ uiPropertySplitWrapper uiItemPropertySplitWrapperCreate(uiLayout *parent_layout)
|
||||
split_wrapper.label_column = uiLayoutColumn(layout_split, true);
|
||||
split_wrapper.label_column->alignment = UI_LAYOUT_ALIGN_RIGHT;
|
||||
split_wrapper.property_row = ui_item_prop_split_layout_hack(parent_layout, layout_split);
|
||||
split_wrapper.decorate_column = uiLayoutColumn(layout_row, true);
|
||||
split_wrapper.decorate_column = uiLayoutGetPropDecorate(parent_layout) ?
|
||||
uiLayoutColumn(layout_row, true) :
|
||||
nullptr;
|
||||
|
||||
return split_wrapper;
|
||||
}
|
||||
|
||||
@@ -878,10 +878,10 @@ static void ui_node_draw_input(uiLayout &layout,
|
||||
PointerRNA nodeptr = RNA_pointer_create(&ntree.id, &RNA_Node, &node);
|
||||
|
||||
row = uiLayoutRow(&layout, true);
|
||||
/* Decorations are added manually here. */
|
||||
uiLayoutSetPropDecorate(row, false);
|
||||
|
||||
uiPropertySplitWrapper split_wrapper = uiItemPropertySplitWrapperCreate(row);
|
||||
/* Decorations are added manually here. */
|
||||
uiLayoutSetPropDecorate(row, false);
|
||||
/* Empty decorator item for alignment. */
|
||||
bool add_dummy_decorator = false;
|
||||
|
||||
@@ -944,8 +944,10 @@ static void ui_node_draw_input(uiLayout &layout,
|
||||
case SOCK_BOOLEAN:
|
||||
case SOCK_RGBA:
|
||||
uiItemR(sub, &inputptr, "default_value", UI_ITEM_NONE, "", ICON_NONE);
|
||||
uiItemDecoratorR(
|
||||
split_wrapper.decorate_column, &inputptr, "default_value", RNA_NO_INDEX);
|
||||
if (split_wrapper.decorate_column) {
|
||||
uiItemDecoratorR(
|
||||
split_wrapper.decorate_column, &inputptr, "default_value", RNA_NO_INDEX);
|
||||
}
|
||||
break;
|
||||
case SOCK_STRING: {
|
||||
const bNodeTree *node_tree = (const bNodeTree *)nodeptr.owner_id;
|
||||
@@ -958,8 +960,10 @@ static void ui_node_draw_input(uiLayout &layout,
|
||||
else {
|
||||
uiItemR(sub, &inputptr, "default_value", UI_ITEM_NONE, "", ICON_NONE);
|
||||
}
|
||||
uiItemDecoratorR(
|
||||
split_wrapper.decorate_column, &inputptr, "default_value", RNA_NO_INDEX);
|
||||
if (split_wrapper.decorate_column) {
|
||||
uiItemDecoratorR(
|
||||
split_wrapper.decorate_column, &inputptr, "default_value", RNA_NO_INDEX);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case SOCK_MENU:
|
||||
@@ -974,7 +978,7 @@ static void ui_node_draw_input(uiLayout &layout,
|
||||
}
|
||||
}
|
||||
|
||||
if (add_dummy_decorator) {
|
||||
if (add_dummy_decorator && split_wrapper.decorate_column) {
|
||||
uiItemDecoratorR(split_wrapper.decorate_column, nullptr, nullptr, 0);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user