Skip to content

Commit 98899a0

Browse files
committed
optimization
1 parent 13c993e commit 98899a0

File tree

2 files changed

+11
-10
lines changed

2 files changed

+11
-10
lines changed

src/textual/_arrange.py

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
3439
def arrange(
3540
widget: Widget,
3641
children: Sequence[Widget],
@@ -50,22 +55,18 @@ 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 = [child for child in children if get_display(child) != "none"]
63+
display_widgets = list(filter(_get_display, children))
6364
# Widgets organized into layers
6465
layers = _build_layers(display_widgets)
6566

6667
for widgets in layers.values():
6768
# Partition widgets into split widgets and non-split widgets
68-
non_split_widgets, split_widgets = partition(get_split, widgets)
69+
non_split_widgets, split_widgets = partition(_get_split, widgets)
6970
if split_widgets:
7071
_split_placements, dock_region = _arrange_split_widgets(
7172
split_widgets, size, viewport
@@ -78,7 +79,7 @@ def arrange(
7879

7980
# Partition widgets into "layout" widgets (those that appears in the normal 'flow' of the
8081
# document), and "dock" widgets which are positioned relative to an edge
81-
layout_widgets, dock_widgets = partition(get_dock, non_split_widgets)
82+
layout_widgets, dock_widgets = partition(_get_dock, non_split_widgets)
8283

8384
# Arrange docked widgets
8485
if dock_widgets:

src/textual/widget.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -460,7 +460,7 @@ def __init__(
460460
self._content_height_cache: tuple[object, int] = (None, 0)
461461

462462
self._arrangement_cache: FIFOCache[
463-
tuple[Size, int, Widget], DockArrangeResult
463+
tuple[Size, int, Widget | None], DockArrangeResult
464464
] = FIFOCache(4)
465465

466466
self._styles_cache = StylesCache()

0 commit comments

Comments
 (0)