[Bf-blender-cvs] [cc13cac3979] lanpr-under-gp: Property Search: Set expansion properly for child panels

Hans Goudey noreply at git.blender.org
Fri Oct 2 07:40:24 CEST 2020


Commit: cc13cac3979e344950f26b0724871a38211ad378
Author: Hans Goudey
Date:   Tue Sep 29 09:33:48 2020 -0500
Branches: lanpr-under-gp
https://developer.blender.org/rBcc13cac3979e344950f26b0724871a38211ad378

Property Search: Set expansion properly for child panels

Although I haven't seen this cause any visible errors, there is some
incorrect handling for setting panel expansion during search:
 - Properly check if child panel is active first
 - Don't stop traversal at headerless panels that could theoretically
   have children

===================================================================

M	source/blender/editors/interface/interface_panel.c

===================================================================

diff --git a/source/blender/editors/interface/interface_panel.c b/source/blender/editors/interface/interface_panel.c
index 65415a750bb..a23929ad789 100644
--- a/source/blender/editors/interface/interface_panel.c
+++ b/source/blender/editors/interface/interface_panel.c
@@ -846,18 +846,18 @@ bool UI_panel_matches_search_filter(const Panel *panel)
  */
 static void panel_set_expansion_from_seach_filter_recursive(const bContext *C, Panel *panel)
 {
-  short start_flag = panel->flag;
-  SET_FLAG_FROM_TEST(panel->flag, !UI_panel_matches_search_filter(panel), PNL_CLOSED);
-  if (start_flag != panel->flag) {
-    panel_activate_state(C, panel, PANEL_STATE_ANIMATION);
+  if (!(panel->type->flag & PNL_NO_HEADER)) {
+    short start_flag = panel->flag;
+    SET_FLAG_FROM_TEST(panel->flag, !UI_panel_matches_search_filter(panel), PNL_CLOSED);
+    if (start_flag != panel->flag) {
+      panel_activate_state(C, panel, PANEL_STATE_ANIMATION);
+    }
   }
 
   /* If the panel is filtered (removed) we need to check that its children are too. */
   LISTBASE_FOREACH (Panel *, child_panel, &panel->children) {
-    if (panel->runtime_flag & PANEL_ACTIVE) {
-      if (!(panel->type->flag & PNL_NO_HEADER)) {
-        panel_set_expansion_from_seach_filter_recursive(C, child_panel);
-      }
+    if (child_panel->runtime_flag & PANEL_ACTIVE) {
+      panel_set_expansion_from_seach_filter_recursive(C, child_panel);
     }
   }
 }
@@ -870,9 +870,7 @@ void UI_panels_set_expansion_from_seach_filter(const bContext *C, ARegion *regio
 {
   LISTBASE_FOREACH (Panel *, panel, &region->panels) {
     if (panel->runtime_flag & PANEL_ACTIVE) {
-      if (!(panel->type->flag & PNL_NO_HEADER)) {
-        panel_set_expansion_from_seach_filter_recursive(C, panel);
-      }
+      panel_set_expansion_from_seach_filter_recursive(C, panel);
     }
   }
 }



More information about the Bf-blender-cvs mailing list