From 7adb017fbb29b8ce7eb425bddd1f0a675d66fade Mon Sep 17 00:00:00 2001 From: Tristan Simas Date: Wed, 7 Oct 2026 21:36:30 -0400 Subject: [PATCH] Acquire Widget only for selector-dependent message handlers --- src/textual/message_pump.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/textual/message_pump.py b/src/textual/message_pump.py index 07ff18deb4..1479bf37dd 100644 --- a/src/textual/message_pump.py +++ b/src/textual/message_pump.py @@ -879,8 +879,6 @@ def _get_dispatch_methods( method_name: Handler method name. message: Message object. """ - from textual.widget import Widget - methods_dispatched: set[Callable] | None = None message_types = message.__class__.__mro__ message_mro: list[type[Message]] | None = None @@ -914,6 +912,11 @@ def _get_dispatch_methods( else: if not message._sender: continue + # Widget is required only by selector matching. + # Idle, named and unfiltered decorated delivery + # do not acquire this unrelated type boundary. + from textual.widget import Widget + for attribute, selector in selectors.items(): node = getattr(message, attribute) if node is None: