diff --git a/sandbox/davep/Makefile b/sandbox/davep/Makefile new file mode 100644 index 000000000..6e894844a --- /dev/null +++ b/sandbox/davep/Makefile @@ -0,0 +1,2 @@ +all: + poetry run textual run --dev focus_removal_tester.py diff --git a/sandbox/davep/focus_removal_tester.py b/sandbox/davep/focus_removal_tester.py new file mode 100644 index 000000000..02cd3719a --- /dev/null +++ b/sandbox/davep/focus_removal_tester.py @@ -0,0 +1,37 @@ +"""Focus removal tester. + +https://github.com/Textualize/textual/issues/939 +""" + +from textual.app import App +from textual.containers import Container +from textual.widgets import Static, Header, Footer, Button + + +class NonFocusParent(Static): + def compose(self): + yield Button("Do Not Press") + yield Static("Test") + yield Button("Really Do Not Press") + + +class FocusRemovalTester(App[None]): + + BINDINGS = [("a", "add_widget", "Add Widget"), ("d", "del_widget", "Delete Widget")] + + def compose(self): + yield Header() + yield Container() + yield Footer() + + def action_add_widget(self): + self.query_one(Container).mount(NonFocusParent()) + + def action_del_widget(self): + candidates = self.query(NonFocusParent) + if candidates: + candidates.last().remove() + + +if __name__ == "__main__": + FocusRemovalTester().run()