@@ -31,6 +31,11 @@ def _build_layers(widgets: Iterable[Widget]) -> Mapping[str, Sequence[Widget]]:
3131 return layers
3232
3333
34+ _get_dock = attrgetter ("styles.is_docked" )
35+ _get_split = attrgetter ("styles.is_split" )
36+ _get_display = attrgetter ("display" )
37+
38+
3439def arrange (
3540 widget : Widget ,
3641 children : Sequence [Widget ],
@@ -50,22 +55,17 @@ def arrange(
5055 """
5156
5257 placements : list [WidgetPlacement ] = []
53- scroll_spacing = Spacing ()
54-
55- get_dock = attrgetter ("styles.is_docked" )
56- get_split = attrgetter ("styles.is_split" )
57- get_display = attrgetter ("styles.display" )
58-
58+ scroll_spacing = NULL_SPACING
5959 styles = widget .styles
6060
6161 # Widgets which will be displayed
62- display_widgets = [ child for child in children if get_display ( child ) != "none" ]
62+ display_widgets = list ( filter ( _get_display , children ))
6363 # Widgets organized into layers
6464 layers = _build_layers (display_widgets )
6565
6666 for widgets in layers .values ():
6767 # Partition widgets into split widgets and non-split widgets
68- non_split_widgets , split_widgets = partition (get_split , widgets )
68+ non_split_widgets , split_widgets = partition (_get_split , widgets )
6969 if split_widgets :
7070 _split_placements , dock_region = _arrange_split_widgets (
7171 split_widgets , size , viewport
@@ -78,7 +78,7 @@ def arrange(
7878
7979 # Partition widgets into "layout" widgets (those that appears in the normal 'flow' of the
8080 # document), and "dock" widgets which are positioned relative to an edge
81- layout_widgets , dock_widgets = partition (get_dock , non_split_widgets )
81+ layout_widgets , dock_widgets = partition (_get_dock , non_split_widgets )
8282
8383 # Arrange docked widgets
8484 if dock_widgets :
@@ -94,8 +94,10 @@ def arrange(
9494
9595 if layout_widgets :
9696 # Arrange layout widgets (i.e. not docked)
97- layout_placements = widget .layout .arrange (
98- widget , layout_widgets , dock_region .size , greedy = not optimal
97+ layout_placements = widget .process_layout (
98+ widget .layout .arrange (
99+ widget , layout_widgets , dock_region .size , greedy = not optimal
100+ )
99101 )
100102 scroll_spacing = scroll_spacing .grow_maximum (dock_spacing )
101103 placement_offset = dock_region .offset
0 commit comments