From 29d0a64f0b35ac5bc23adcf56308742f128041b7 Mon Sep 17 00:00:00 2001 From: Tristan Simas Date: Wed, 11 Nov 2026 17:00:24 -0500 Subject: [PATCH] Declare workspace chrome as compositing layers WorkspaceHeader, ChannelsSidebar and ToadFooter are compositing layers. The layer compositor caches their terminal output independently; the header blits from cache on every warm switch. Co-Authored-By: Claude Opus 4.6 (1M context) --- src/toad/widgets/channels_sidebar.py | 1 + src/toad/widgets/footer.py | 1 + src/toad/workspace_chrome.py | 1 + 3 files changed, 3 insertions(+) diff --git a/src/toad/widgets/channels_sidebar.py b/src/toad/widgets/channels_sidebar.py index 2eca9fdcf..d4e913dd6 100644 --- a/src/toad/widgets/channels_sidebar.py +++ b/src/toad/widgets/channels_sidebar.py @@ -9,6 +9,7 @@ class ChannelsSidebar(SideBar): + COMPOSITING_LAYER = True def __init__(self, *, observe: bool = True, defer_mount: bool = False) -> None: self.roster = CommsSidebar(observe=observe) super().__init__( diff --git a/src/toad/widgets/footer.py b/src/toad/widgets/footer.py index c1edef3f7..68d263cd5 100644 --- a/src/toad/widgets/footer.py +++ b/src/toad/widgets/footer.py @@ -69,6 +69,7 @@ class ToadFooter( Footer, setting='ui.footer', ): + COMPOSITING_LAYER = True # The footer's tone shows through: no stylesheet paint over it. tone = FooterToneColour key_type = ToadFooterKey diff --git a/src/toad/workspace_chrome.py b/src/toad/workspace_chrome.py index 6ac45b9e8..a58e0b378 100644 --- a/src/toad/workspace_chrome.py +++ b/src/toad/workspace_chrome.py @@ -28,6 +28,7 @@ class WorkspaceHeader(FollowsLayoutPreferences, TonePaint, WidgetView, Horizontal): + COMPOSITING_LAYER = True tone = HeaderToneColour width = FILL height = AUTO