From 3b27d5acaacde47a2d6733cf283d65ebb9bf1954 Mon Sep 17 00:00:00 2001 From: Will McGugan Date: Sun, 17 Aug 2025 12:44:35 +0100 Subject: [PATCH] optimize screen composing --- src/textual/dom.py | 2 +- src/textual/screen.py | 4 ++++ src/textual/widgets/_text_area.py | 6 ++++-- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/textual/dom.py b/src/textual/dom.py index 2dba90b015..9aca779fd0 100644 --- a/src/textual/dom.py +++ b/src/textual/dom.py @@ -1729,7 +1729,7 @@ def _update_styles(self) -> None: Should be called whenever CSS classes / pseudo classes change. """ - if not self.is_attached: + if not self.is_attached or not self.screen.is_mounted: return try: self.app.update_styles(self) diff --git a/src/textual/screen.py b/src/textual/screen.py index b1f0f6d5e1..14e11046da 100644 --- a/src/textual/screen.py +++ b/src/textual/screen.py @@ -1354,6 +1354,10 @@ def _on_screen_resume(self) -> None: self._refresh_layout(size) self.refresh() + async def _compose(self) -> None: + await super()._compose() + self._update_auto_focus() + def _update_auto_focus(self) -> None: """Update auto focus.""" if self.app.app_focus: diff --git a/src/textual/widgets/_text_area.py b/src/textual/widgets/_text_area.py index cc8b5b144b..4b6e4fa98f 100644 --- a/src/textual/widgets/_text_area.py +++ b/src/textual/widgets/_text_area.py @@ -1782,12 +1782,14 @@ def _restart_blink(self) -> None: """Reset the cursor blink timer.""" if self.cursor_blink: self._cursor_visible = True - self.blink_timer.reset() + if self.is_mounted: + self.blink_timer.reset() def _pause_blink(self, visible: bool = True) -> None: """Pause the cursor blinking but ensure it stays visible.""" self._cursor_visible = visible - self.blink_timer.pause() + if self.is_mounted: + self.blink_timer.pause() async def _on_mouse_down(self, event: events.MouseDown) -> None: """Update the cursor position, and begin a selection using the mouse."""