77from typing import cast , Iterable , Optional , Tuple , TYPE_CHECKING
88
99from rich .console import Console , ConsoleOptions , RenderResult , RenderableType
10- from rich .region import Region as LayoutRegion
1110import rich .repr
12- from rich .segment import Segments
1311from rich .style import Style
1412
1513from . import events
16- from ._context import active_app
1714from .layout import Layout , NoWidget
1815from .layouts .dock import DockEdge , DockLayout , Dock
1916from .geometry import Dimensions , Point , Region
2017from .messages import UpdateMessage , LayoutMessage
2118
22- from .widget import StaticWidget , Widget , WidgetID , Widget
23- from . widgets . header import Header
19+ from .widget import Widget , Widget
20+
2421
2522if TYPE_CHECKING :
2623 from .app import App
@@ -48,6 +45,10 @@ def __rich_console__(
4845 def __rich_repr__ (self ) -> rich .repr .RichReprResult :
4946 yield "name" , self .name
5047
48+ @property
49+ def is_visual (self ) -> bool :
50+ return False
51+
5152 @property
5253 def is_root_view (self ) -> bool :
5354 return self .parent is self .app
@@ -69,12 +70,8 @@ async def message_update(self, message: UpdateMessage) -> None:
6970 self .app .display (display_update )
7071
7172 async def message_layout (self , message : LayoutMessage ) -> None :
72-
7373 await self .root_view .refresh_layout ()
7474
75- # async def on_create(self, event: events.Created) -> None:
76- # await self.mount(Header(self.title))
77-
7875 async def mount (self , * anon_widgets : Widget , ** widgets : Widget ) -> None :
7976
8077 name_widgets : Iterable [tuple [str | None , Widget ]]
@@ -101,13 +98,13 @@ async def refresh_layout(self) -> None:
10198 self .layout .reflow (width , height )
10299 self .app .refresh ()
103100
104- # for widget, region in self.layout:
105- # if isinstance(widget, Widget):
106- # await widget.post_message(
107- # events.Resize(self, region.width, region.height)
108- # )
101+ for widget , region in self .layout :
102+ if isinstance (widget , Widget ):
103+ await widget .post_message (
104+ events .Resize (self , region .width , region .height )
105+ )
109106
110- async def on_resize (self , event : events .Resize ) -> None :
107+ async def on_resize (self , event : events .Resize ) -> None :
111108 self .size = Dimensions (event .width , event .height )
112109 await self .refresh_layout ()
113110
@@ -171,10 +168,10 @@ async def forward_event(self, event: events.Event) -> None:
171168 await self .focused .forward_event (event )
172169
173170 async def action_toggle (self , name : str ) -> None :
174- log .debug ("%r" , self .named_widgets )
175171 widget = self .named_widgets [name ]
176172 widget .visible = not widget .visible
177- await self .refresh_layout ()
173+ await self .post_message (LayoutMessage (self ))
174+ # await self.refresh_layout()
178175
179176
180177class DoNotSet :
@@ -194,6 +191,7 @@ async def dock(
194191 edge : DockEdge = "top" ,
195192 z : int = 0 ,
196193 size : int | None | DoNotSet = do_not_set ,
194+ name : str | None = None
197195 ) -> Widget | tuple [Widget , ...]:
198196
199197 dock = Dock (edge , widgets , z )
0 commit comments