From 70d4ebc316d4df4371d0a2b0817cce3579626af3 Mon Sep 17 00:00:00 2001 From: Will McGugan Date: Fri, 16 Dec 2022 20:19:01 +0000 Subject: [PATCH] Added message to exit method --- src/textual/_compositor.py | 2 +- src/textual/app.py | 7 ++++++- src/textual/widgets/_tree.py | 3 ++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/textual/_compositor.py b/src/textual/_compositor.py index 75c7b973f..ec350ebfe 100644 --- a/src/textual/_compositor.py +++ b/src/textual/_compositor.py @@ -449,7 +449,7 @@ class Compositor: map[widget] = MapGeometry( region + layout_offset, order, - clip, + clip if widget.is_container else sub_clip, total_region.size, container_size, virtual_region, diff --git a/src/textual/app.py b/src/textual/app.py index 3a99ee9fa..4e0c24457 100644 --- a/src/textual/app.py +++ b/src/textual/app.py @@ -414,14 +414,19 @@ class App(Generic[ReturnType], DOMNode): """list[Screen]: A *copy* of the screen stack.""" return self._screen_stack.copy() - def exit(self, result: ReturnType | None = None) -> None: + def exit( + self, result: ReturnType | None = None, message: RenderableType | None = None + ) -> None: """Exit the app, and return the supplied result. Args: result (ReturnType | None, optional): Return value. Defaults to None. + message (RenderableType | None): Optional message to display on exit. """ self._return_value = result self.post_message_no_wait(messages.ExitApp(sender=self)) + if message: + self._exit_renderables.append(message) @property def focused(self) -> Widget | None: diff --git a/src/textual/widgets/_tree.py b/src/textual/widgets/_tree.py index 7619112d8..de61976be 100644 --- a/src/textual/widgets/_tree.py +++ b/src/textual/widgets/_tree.py @@ -451,6 +451,7 @@ class Tree(Generic[TreeDataType], ScrollView, can_focus=True): def clear(self) -> None: """Clear all nodes under root.""" + self._line_cache.clear() self._tree_lines_cached = None self._current_id = 0 root_label = self.root._label @@ -810,7 +811,7 @@ class Tree(Generic[TreeDataType], ScrollView, can_focus=True): cursor_line = meta["line"] if meta.get("toggle", False): node = self.get_node_at_line(cursor_line) - if node is not None and self.auto_expand: + if node is not None: self._toggle_node(node) else: