diff --git a/src/textual/app.py b/src/textual/app.py index 50132c6d2f..d1209e17a8 100644 --- a/src/textual/app.py +++ b/src/textual/app.py @@ -4302,9 +4302,9 @@ def action_show_help_panel(self) -> None: from textual.widgets import HelpPanel try: - self.query_one(HelpPanel) + self.screen.query_one(HelpPanel) except NoMatches: - self.mount(HelpPanel()) + self.screen.mount(HelpPanel()) def action_notify( self, message: str, title: str = "", severity: str = "information" diff --git a/src/textual/demo/game.py b/src/textual/demo/game.py index 116f076f71..6a278064bb 100644 --- a/src/textual/demo/game.py +++ b/src/textual/demo/game.py @@ -539,17 +539,20 @@ class GameScreen(PageScreen): DEFAULT_CSS = """ GameScreen{ - align: center middle; - layers: instructions game; + #container { + align: center middle; + layers: instructions game; + } } """ BINDINGS = [("n", "new_game", "New Game")] def compose(self) -> ComposeResult: - yield GameInstructions() - yield Game("\n" * 100, "", dimensions=(4, 4), tile_size=(16, 8)) - yield Footer() + with containers.Vertical(id="container"): + yield GameInstructions() + yield Game("\n" * 100, "", dimensions=(4, 4), tile_size=(16, 8)) + yield Footer() def action_shuffle(self) -> None: self.query_one(Game).shuffle() diff --git a/src/textual/widgets/_key_panel.py b/src/textual/widgets/_key_panel.py index bd9f67a64c..39bc8322bd 100644 --- a/src/textual/widgets/_key_panel.py +++ b/src/textual/widgets/_key_panel.py @@ -1,6 +1,7 @@ from __future__ import annotations from collections import defaultdict +from functools import partial from itertools import groupby from operator import itemgetter from typing import TYPE_CHECKING @@ -164,13 +165,18 @@ def compose(self) -> ComposeResult: async def on_mount(self) -> None: async def bindings_changed(screen: Screen) -> None: + """Update bindings.""" if not screen.app.app_focus: return if self.is_attached and screen is self.screen: self.refresh(recompose=True) + def _bindings_changed(screen: Screen) -> None: + """Update bindings after a short delay.""" + screen.set_timer(1 / 20, partial(bindings_changed, screen)) + self.set_class(self.app.ansi_color, "-ansi-scrollbar") - self.screen.bindings_updated_signal.subscribe(self, bindings_changed) + self.screen.bindings_updated_signal.subscribe(self, _bindings_changed) def on_unmount(self) -> None: self.screen.bindings_updated_signal.unsubscribe(self) diff --git a/src/textual/widgets/_link.py b/src/textual/widgets/_link.py index b9331449b1..c3d95c3b3d 100644 --- a/src/textual/widgets/_link.py +++ b/src/textual/widgets/_link.py @@ -13,9 +13,9 @@ class Link(Static, can_focus=True): width: auto; height: auto; min-height: 1; - color: $accent; + color: $text-accent; text-style: underline; - &:hover { color: $accent-lighten-1; } + &:hover { color: $accent; } &:focus { text-style: bold reverse; } } """