From d65daf81c04350712ad5fc737c1103bd6f849717 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rodrigo=20Gir=C3=A3o=20Serr=C3=A3o?= <5621605+rodrigogiraoserrao@users.noreply.github.com> Date: Thu, 18 May 2023 15:07:52 +0100 Subject: [PATCH] Address review comments. --- src/textual/app.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/textual/app.py b/src/textual/app.py index 8d162ef19..81ddee40b 100644 --- a/src/textual/app.py +++ b/src/textual/app.py @@ -1454,10 +1454,9 @@ class App(Generic[ReturnType], DOMNode): return stack = self._screen_stacks[mode] - for screen in reversed(stack): - if screen._running: - self.call_later(self._prune_node, screen) del self._screen_stacks[mode] + for screen in reversed(stack): + self._replace_screen(screen) def is_screen_installed(self, screen: Screen | str) -> bool: """Check if a given screen has been installed. @@ -1535,9 +1534,8 @@ class App(Generic[ReturnType], DOMNode): self.screen.refresh() screen.post_message(events.ScreenSuspend()) self.log.system(f"{screen} SUSPENDED") - if ( - not self.is_screen_installed(screen) - and screen not in self._screen_stacks[self._current_mode] + if not self.is_screen_installed(screen) and all( + screen not in stack for stack in self._screen_stacks.values() ): screen.remove() self.log.system(f"{screen} REMOVED")