From 44d4fa2f086556ab9dcc3a9e7dfcc02f7ae60715 Mon Sep 17 00:00:00 2001 From: Will McGugan Date: Fri, 2 Sep 2022 10:11:09 +0100 Subject: [PATCH] exclude invisible widgets --- sandbox/will/spacing.css | 1 + sandbox/will/spacing.py | 7 ++++++- src/textual/_compositor.py | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/sandbox/will/spacing.css b/sandbox/will/spacing.css index 4e256a341..911512567 100644 --- a/sandbox/will/spacing.css +++ b/sandbox/will/spacing.css @@ -9,4 +9,5 @@ Static { height: 100%; margin: 2 4; min-width: 30; + visibility: hidden; } diff --git a/sandbox/will/spacing.py b/sandbox/will/spacing.py index 9e7cb8b0e..184a53526 100644 --- a/sandbox/will/spacing.py +++ b/sandbox/will/spacing.py @@ -2,9 +2,14 @@ from textual.app import App from textual.widgets import Static +class Clickable(Static): + def on_click(self): + self.app.bell() + + class SpacingApp(App): def compose(self): - yield Static() + yield Clickable() app = SpacingApp(css_path="spacing.css") diff --git a/src/textual/_compositor.py b/src/textual/_compositor.py index 1f43b9b24..6ceda8e6b 100644 --- a/src/textual/_compositor.py +++ b/src/textual/_compositor.py @@ -487,7 +487,7 @@ class Compositor: # TODO: Optimize with some line based lookup contains = Region.contains for widget, cropped_region, region, *_ in self: - if contains(cropped_region, x, y): + if contains(cropped_region, x, y) and widget.visible: return widget, region raise errors.NoWidget(f"No widget under screen coordinate ({x}, {y})")