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-09-15 23:57:30 +0300
committerHans Goudey <h.goudey@me.com>2020-09-15 23:57:30 +0300
commitcf0791bf38dd04a6c7067973e61894d93a73539b (patch)
tree3cf8f1f3a8dfbb14c1e47c2e678d69fefb7cd5c7
parenta4c5811e21271d0f26e0534f25800059c198982d (diff)
Property Search: Properly set expansion for instanced panels
Stack panels (for modifiers, etc..) also get their expansion from their associated list data. This means that property search expansion needs to properly update the list data, which can be accomplished by calling `set_panels_list_data_expand_flag`. This commit also moves this logic to `UI_panels_end`, where it fits better.
-rw-r--r--source/blender/editors/interface/interface_panel.c12
-rw-r--r--source/blender/editors/screen/area.c8
2 files changed, 12 insertions, 8 deletions
diff --git a/source/blender/editors/interface/interface_panel.c b/source/blender/editors/interface/interface_panel.c
index f956a34def9..101d3a7d38d 100644
--- a/source/blender/editors/interface/interface_panel.c
+++ b/source/blender/editors/interface/interface_panel.c
@@ -845,6 +845,9 @@ bool UI_panel_matches_search_filter(const Panel *panel)
return search_filter_matches;
}
+/**
+ * Expands a panel if it was tagged as having a result by property search, otherwise collapses it.
+ */
static void panel_set_expansion_from_seach_filter_recursive(const bContext *C, Panel *panel)
{
short start_flag = panel->flag;
@@ -1913,6 +1916,15 @@ void UI_panels_end(const bContext *C, ARegion *region, int *r_x, int *r_y)
region_panels_set_expansion_from_list_data(C, region);
+ /* Update panel expansion based on property search results. */
+ if (region->flag & RGN_FLAG_SEARCH_FILTER_UPDATE) {
+ /* Don't use the last update from the deactivation, or all the panels will be left closed. */
+ if (region->flag & RGN_FLAG_SEARCH_FILTER_ACTIVE) {
+ UI_panels_set_expansion_from_seach_filter(C, region);
+ set_panels_list_data_expand_flag(C, region);
+ }
+ }
+
/* offset contents */
LISTBASE_FOREACH (uiBlock *, block, &region->uiblocks) {
if (block->active && block->panel) {
diff --git a/source/blender/editors/screen/area.c b/source/blender/editors/screen/area.c
index f6c54e87410..bfd98741ac8 100644
--- a/source/blender/editors/screen/area.c
+++ b/source/blender/editors/screen/area.c
@@ -2945,14 +2945,6 @@ void ED_region_panels_layout_ex(const bContext *C,
}
}
- /* Update panel expansion based on property search results. */
- if (region->flag & RGN_FLAG_SEARCH_FILTER_UPDATE) {
- /* Don't use the last update from the deactivation, or all the panels will be left closed. */
- if (region->flag & RGN_FLAG_SEARCH_FILTER_ACTIVE) {
- UI_panels_set_expansion_from_seach_filter(C, region);
- }
- }
-
/* align panels and return size */
UI_panels_end(C, region, &x, &y);