[Bf-blender-cvs] [8aab26b3b37] master: UI: Refactor some list panel expansion code

Hans Goudey noreply at git.blender.org
Tue Sep 15 22:34:46 CEST 2020


Commit: 8aab26b3b3761108bb21b872738f8d324c2f860f
Author: Hans Goudey
Date:   Tue Sep 15 15:34:27 2020 -0500
Branches: master
https://developer.blender.org/rB8aab26b3b3761108bb21b872738f8d324c2f860f

UI: Refactor some list panel expansion code

This commit moves the "get panel expansion from list data" function to
UI_panels_end, which is an improvement because it's more centralized.

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

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

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

diff --git a/source/blender/editors/interface/interface_panel.c b/source/blender/editors/interface/interface_panel.c
index c11e4397b4c..f956a34def9 100644
--- a/source/blender/editors/interface/interface_panel.c
+++ b/source/blender/editors/interface/interface_panel.c
@@ -521,6 +521,19 @@ void UI_panel_set_expand_from_list_data(const bContext *C, Panel *panel)
   }
 }
 
+/**
+ * Set expansion based on the data for instanced panels.
+ */
+static void region_panels_set_expansion_from_list_data(const bContext *C, ARegion *region)
+{
+  LISTBASE_FOREACH (Panel *, panel, &region->panels) {
+    PanelType *panel_type = panel->type;
+    if (panel_type != NULL && panel->type->flag & PNL_INSTANCED) {
+      UI_panel_set_expand_from_list_data(C, panel);
+    }
+  }
+}
+
 /**
  * Recursive implementation for #set_panels_list_data_expand_flag.
  */
@@ -1898,6 +1911,8 @@ void UI_panels_end(const bContext *C, ARegion *region, int *r_x, int *r_y)
 {
   ScrArea *area = CTX_wm_area(C);
 
+  region_panels_set_expansion_from_list_data(C, region);
+
   /* offset contents */
   LISTBASE_FOREACH (uiBlock *, block, &region->uiblocks) {
     if (block->active && block->panel) {
diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c
index 28c986f87cc..316525fa645 100644
--- a/source/blender/editors/interface/interface_templates.c
+++ b/source/blender/editors/interface/interface_templates.c
@@ -1940,13 +1940,6 @@ void uiTemplateModifiers(uiLayout *UNUSED(layout), bContext *C)
 
       panel = panel->next;
     }
-
-    /* The expansion might have been changed elsewhere, so we still need to set it. */
-    LISTBASE_FOREACH (Panel *, panel_iter, &region->panels) {
-      if ((panel_iter->type != NULL) && (panel_iter->type->flag & PNL_INSTANCED)) {
-        UI_panel_set_expand_from_list_data(C, panel_iter);
-      }
-    }
   }
 }
 
@@ -2114,13 +2107,6 @@ void uiTemplateConstraints(uiLayout *UNUSED(layout), bContext *C, bool use_bone_
 
       panel = panel->next;
     }
-
-    /* The expansion might have been changed elsewhere, so we still need to set it. */
-    LISTBASE_FOREACH (Panel *, panel_iter, &region->panels) {
-      if ((panel_iter->type != NULL) && (panel_iter->type->flag & PNL_INSTANCED)) {
-        UI_panel_set_expand_from_list_data(C, panel_iter);
-      }
-    }
   }
 }
 
@@ -2195,13 +2181,6 @@ void uiTemplateGpencilModifiers(uiLayout *UNUSED(layout), bContext *C)
 
       panel = panel->next;
     }
-
-    /* The expansion might have been changed elsewhere, so we still need to set it. */
-    LISTBASE_FOREACH (Panel *, panel_iter, &region->panels) {
-      if ((panel_iter->type != NULL) && (panel_iter->type->flag & PNL_INSTANCED)) {
-        UI_panel_set_expand_from_list_data(C, panel_iter);
-      }
-    }
   }
 }
 
@@ -2277,13 +2256,6 @@ void uiTemplateShaderFx(uiLayout *UNUSED(layout), bContext *C)
 
       panel = panel->next;
     }
-
-    /* The expansion might have been changed elsewhere, so we still need to set it. */
-    LISTBASE_FOREACH (Panel *, panel_iter, &region->panels) {
-      if ((panel_iter->type != NULL) && (panel_iter->type->flag & PNL_INSTANCED)) {
-        UI_panel_set_expand_from_list_data(C, panel_iter);
-      }
-    }
   }
 }



More information about the Bf-blender-cvs mailing list