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:
authorHans Goudey <h.goudey@me.com>2020-10-06 00:23:21 +0300
committerHans Goudey <h.goudey@me.com>2020-10-06 00:23:21 +0300
commit3178dc25f6edc95d6de49ab2894303aedc0a23b3 (patch)
tree1e96bc7bc3f71cfa746a9a6686b036d19fb16798
parent7951312d4b5c99e97155b0ea02b5b1b21cdf6de8 (diff)
Fix T81470: Buttons in closed panel visible during search
The buttons hide when the search finishes based on whether they are in the "panel header" group. These buttons were not protected with a new group. This adds a new group for operator button calls, and also makes it so a new group is always created after the header buttons.
-rw-r--r--source/blender/editors/interface/interface_layout.c2
-rw-r--r--source/blender/editors/interface/interface_panel.c10
2 files changed, 9 insertions, 3 deletions
diff --git a/source/blender/editors/interface/interface_layout.c b/source/blender/editors/interface/interface_layout.c
index d0621051023..b13dd24ea4b 100644
--- a/source/blender/editors/interface/interface_layout.c
+++ b/source/blender/editors/interface/interface_layout.c
@@ -1163,8 +1163,8 @@ static uiBut *uiItemFullO_ptr_ex(uiLayout *layout,
icon = ICON_BLANK1;
}
- /* create button */
UI_block_layout_set_current(block, layout);
+ ui_block_new_button_group(block, 0);
const int w = ui_text_icon_width(layout, name, icon, 0);
diff --git a/source/blender/editors/interface/interface_panel.c b/source/blender/editors/interface/interface_panel.c
index f50975760f1..a68cfd53a26 100644
--- a/source/blender/editors/interface/interface_panel.c
+++ b/source/blender/editors/interface/interface_panel.c
@@ -770,6 +770,8 @@ void UI_panel_header_buttons_end(Panel *panel)
uiButtonGroup *button_group = block->button_groups.last;
+ button_group->flag &= ~UI_BUTTON_GROUP_LOCK;
+
/* Repurpose the first "header" button group if it is empty, in case the first button added to
* the panel doesn't add a new group (if the button is created directly rather than through an
* interface layout call). */
@@ -777,8 +779,12 @@ void UI_panel_header_buttons_end(Panel *panel)
BLI_listbase_is_empty(&button_group->buttons)) {
button_group->flag &= ~UI_BUTTON_GROUP_PANEL_HEADER;
}
-
- button_group->flag &= ~UI_BUTTON_GROUP_LOCK;
+ else {
+ /* We should still always add a new button group. Although this results in many empty groups,
+ * without it, new buttons not protected with a #ui_block_new_button_group call would end up
+ * in the panel header group. */
+ ui_block_new_button_group(block, 0);
+ }
}
static float panel_region_offset_x_get(const ARegion *region)