From 4b596352d9fcea990747c06abed0da1832f110b0 Mon Sep 17 00:00:00 2001 From: Will McGugan Date: Wed, 17 Aug 2022 09:33:46 +0100 Subject: [PATCH] removed cruft --- src/textual/app.py | 11 +++++++++-- src/textual/dom.py | 5 ----- src/textual/message_pump.py | 4 ---- tests/test_screens.py | 10 ++++++++++ 4 files changed, 19 insertions(+), 11 deletions(-) diff --git a/src/textual/app.py b/src/textual/app.py index fe288a2a5..d60aecde1 100644 --- a/src/textual/app.py +++ b/src/textual/app.py @@ -733,10 +733,17 @@ class App(Generic[ReturnType], DOMNode): str | None: The name of the screen that was uninstalled, or None if no screen was uninstalled. """ if isinstance(screen, str): - uninstalled_screen = self._installed_screens.pop(screen) - self.log(f"{uninstalled_screen} UNINSTALLED name={screen!r}") + if screen not in self._installed_screens: + return None + uninstall_screen = self._installed_screens[screen] + if uninstall_screen in self._screen_stack: + raise ScreenStackError("Can't uninstall screen in screen stack") + del self._installed_screens[screen] + self.log(f"{uninstall_screen} UNINSTALLED name={screen!r}") return screen else: + if screen in self._screen_stack: + raise ScreenStackError("Can't uninstall screen in screen stack") for name, installed_screen in self._installed_screens.items(): if installed_screen is screen: self._installed_screens.pop(name) diff --git a/src/textual/dom.py b/src/textual/dom.py index a5d2ac4f5..f1a0fc59f 100644 --- a/src/textual/dom.py +++ b/src/textual/dom.py @@ -445,11 +445,6 @@ class DOMNode(MessagePump): """The children which don't have display: none set.""" return [child for child in self.children if child.display] - def detach(self) -> None: - if self._parent and isinstance(self._parent, DOMNode): - self._parent.children._remove(self) - self._detach() - def get_pseudo_classes(self) -> Iterable[str]: """Get any pseudo classes applicable to this Node, e.g. hover, focus. diff --git a/src/textual/message_pump.py b/src/textual/message_pump.py index b263fea83..02583de9b 100644 --- a/src/textual/message_pump.py +++ b/src/textual/message_pump.py @@ -130,10 +130,6 @@ class MessagePump(metaclass=MessagePumpMeta): """ self._parent = parent - def _detach(self) -> None: - """Unset the parent, removing it from the tree.""" - self._parent = None - def check_message_enabled(self, message: Message) -> bool: return type(message) not in self._disabled_messages diff --git a/tests/test_screens.py b/tests/test_screens.py index 7ab342ad4..73ee7f1e4 100644 --- a/tests/test_screens.py +++ b/tests/test_screens.py @@ -64,6 +64,16 @@ async def test_screens(): assert app.screen is screen2 assert app.screen_stack == [screen2] + # Uninstall screens + app.uninstall_screen(screen1) + assert not app.is_screen_installed(screen1) + app.uninstall_screen("screen3") + assert not app.is_screen_installed(screen1) + + # Check we can't uninstall a screen on the stack + with pytest.raises(ScreenStackError): + app.uninstall_screen(screen2) + # Check we can't pop last screen with pytest.raises(ScreenStackError): app.pop_screen()