File tree Expand file tree Collapse file tree 2 files changed +39
-0
lines changed Expand file tree Collapse file tree 2 files changed +39
-0
lines changed Original file line number Diff line number Diff line change @@ -559,6 +559,8 @@ def _arrange_root(
559559 map : CompositorMap = {}
560560 widgets : set [Widget ] = set ()
561561 add_new_widget = widgets .add
562+ invisible_widgets : set [Widget ] = set ()
563+ add_new_invisible_widget = invisible_widgets .add
562564 layer_order : int = 0
563565
564566 no_clip = size .region
@@ -595,6 +597,8 @@ def add_widget(
595597
596598 if visible :
597599 add_new_widget (widget )
600+ else :
601+ add_new_invisible_widget (widget )
598602 styles_offset = styles .offset
599603 layout_offset = (
600604 styles_offset .resolve (region .size , clip .size )
@@ -740,6 +744,7 @@ def add_widget(
740744 True ,
741745 NULL_SPACING ,
742746 )
747+ widgets -= invisible_widgets
743748 return map , widgets
744749
745750 @property
Original file line number Diff line number Diff line change 1+ from textual .app import App , ComposeResult
2+ from textual .widgets import Label
3+
4+
5+ async def test_hide () -> None :
6+ """Check that setting visibility produces Hide messages."""
7+ # https://github.com/Textualize/textual/issues/3460
8+ visibility : list [bool ] = []
9+
10+ class ShowHideLabel (Label ):
11+ def on_show (self ) -> None :
12+ visibility .append (True )
13+
14+ def on_hide (self ) -> None :
15+ visibility .append (False )
16+
17+ class ShowHideApp (App [None ]):
18+ BINDINGS = [("space" , "toggle_label" )]
19+
20+ def compose (self ) -> ComposeResult :
21+ yield ShowHideLabel ("Here I am" )
22+
23+ def action_toggle_label (self ) -> None :
24+ self .query_one (ShowHideLabel ).visible = not self .query_one (
25+ ShowHideLabel
26+ ).visible
27+
28+ app = ShowHideApp ()
29+ async with app .run_test () as pilot :
30+ assert visibility == [True ]
31+ await pilot .press ("space" )
32+ assert visibility == [True , False ]
33+ await pilot .press ("space" )
34+ assert visibility == [True , False , True ]
You can’t perform that action at this time.
0 commit comments