diff --git a/examples/animation.py b/examples/animation.py index 2f9119b59..18f4b0bf4 100644 --- a/examples/animation.py +++ b/examples/animation.py @@ -29,8 +29,8 @@ class SmoothApp(App): self.bar.layout_offset_x = -40 await self.view.dock(footer, edge="bottom") - await self.view.dock(self.bar, edge="left", size=40, z=1) await self.view.dock(Placeholder(), Placeholder(), edge="top") + await self.view.dock(self.bar, edge="left", size=40, z=1) SmoothApp.run() diff --git a/src/textual/message_pump.py b/src/textual/message_pump.py index f0eff8033..0e6b39e28 100644 --- a/src/textual/message_pump.py +++ b/src/textual/message_pump.py @@ -59,7 +59,7 @@ class MessagePump: return self._parent and not self._parent._closed and not self._parent._closing def log(self, *args) -> None: - return self.app.log(args) + return self.app.log(*args) def set_parent(self, parent: MessagePump) -> None: self._parent = parent diff --git a/src/textual/view.py b/src/textual/view.py index c4d0efe5b..1fadb9a21 100644 --- a/src/textual/view.py +++ b/src/textual/view.py @@ -100,7 +100,7 @@ class View(Widget): self.require_repaint() async def refresh_layout(self) -> None: - + await self.layout.mount_all(self) if not self.size or not self.is_root_view: return @@ -108,10 +108,6 @@ class View(Widget): hidden, shown, resized = self.layout.reflow(width, height) self.app.refresh() - for widget in self.layout.get_widgets(): - if not self.is_mounted(widget): - await self.mount(widget) - for widget in hidden: widget.post_message_no_wait(events.Hide(self)) for widget in shown: diff --git a/src/textual/views/_dock_view.py b/src/textual/views/_dock_view.py index 1a7846e97..8226f507f 100644 --- a/src/textual/views/_dock_view.py +++ b/src/textual/views/_dock_view.py @@ -53,7 +53,7 @@ class DockView(View): ) -> GridLayout: grid = GridLayout(gap=gap, gutter=gutter, align=align) - view = View(layout=grid) + view = View(layout=grid, name=name) dock = Dock(edge, (view,), z) assert isinstance(self.layout, DockLayout) self.layout.docks.append(dock) @@ -64,4 +64,5 @@ class DockView(View): await self.mount(view) else: await self.mount(**{name: view}) + await self.refresh_layout() return grid diff --git a/src/textual/widgets/_footer.py b/src/textual/widgets/_footer.py index c4904033d..0bf9c3e79 100644 --- a/src/textual/widgets/_footer.py +++ b/src/textual/widgets/_footer.py @@ -24,6 +24,14 @@ class Footer(Widget): """If highlight key changes we need to regenerate the text.""" self._key_text = None + async def on_mouse_move(self, event: events.MouseMove) -> None: + """Store any key we are moving over.""" + self.highlight_key = event.style.meta.get("key") + + async def on_leave(self, event: events.Leave) -> None: + """Clear any highlight when the mouse leave the widget""" + self.highlight_key = None + def __rich_repr__(self) -> rich.repr.RichReprResult: yield "keys", self.keys @@ -55,11 +63,3 @@ class Footer(Widget): if self._key_text is None: self._key_text = self.make_key_text() return self._key_text - - async def on_mouse_move(self, event: events.MouseMove) -> None: - """Store any key we are moving over.""" - self.highlight_key = event.style.meta.get("key") - - async def on_leave(self, event: events.MouseMove) -> None: - """Clear any highlight when the mouse leave the widget""" - self.highlight_key = None