Skip to content

Commit 6002960

Browse files
committed
order logic
1 parent 52c6e5f commit 6002960

File tree

5 files changed

+91
-116
lines changed

5 files changed

+91
-116
lines changed

src/textual/_unique.py

Lines changed: 0 additions & 23 deletions
This file was deleted.

src/textual/screen.py

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@
4141
_make_path_object_relative,
4242
)
4343
from textual._types import CallbackType
44-
from textual._unique import unique_ordered
4544
from textual.await_complete import AwaitComplete
4645
from textual.binding import ActiveBinding, Binding, BindingsMap
4746
from textual.css.match import match
@@ -441,14 +440,34 @@ def _arrange(self, size: Size) -> DockArrangeResult:
441440
if self.ALLOW_IN_MAXIMIZED_VIEW is None
442441
else self.ALLOW_IN_MAXIMIZED_VIEW
443442
)
443+
444+
def get_maximize_widgets(maximized: Widget) -> list[Widget]:
445+
"""Get widgets to display in maximized view.
446+
447+
Returns:
448+
A list of widgets.
449+
450+
"""
451+
# De-duplicate with a set
452+
widgets = {
453+
*self.query_children(allow_in_maximized_view),
454+
*self.query_children(".-textual-system"),
455+
}
456+
# Restore order of widgets.
457+
maximize_widgets = [
458+
widget
459+
for widget in self.children
460+
if widget in widgets or widget is maximized
461+
]
462+
# Add the maximized widget, if its not already included
463+
if maximized not in maximize_widgets:
464+
maximize_widgets.insert(0, maximized)
465+
return maximize_widgets
466+
444467
arrangement = self._arrangement_cache[cache_key] = arrange(
445468
self,
446469
(
447-
unique_ordered(
448-
self.query_children(allow_in_maximized_view),
449-
self.query_children(".-textual-system"),
450-
[self.maximized],
451-
)
470+
get_maximize_widgets(self.maximized)
452471
if self.maximized is not None
453472
else self._nodes
454473
),

0 commit comments

Comments
 (0)