From 69dfd15092f7e850f0b50041a50ad1e2a6729323 Mon Sep 17 00:00:00 2001 From: flutter-zl Date: Tue, 14 Oct 2025 22:45:13 -0700 Subject: [PATCH] Removed explicit flag checks from SemanticRole.acceptsPointerEvents --- .../src/engine/semantics/incrementable.dart | 3 +++ .../lib/src/engine/semantics/semantics.dart | 12 +---------- .../test/engine/semantics/semantics_test.dart | 20 ------------------- 3 files changed, 4 insertions(+), 31 deletions(-) diff --git a/engine/src/flutter/lib/web_ui/lib/src/engine/semantics/incrementable.dart b/engine/src/flutter/lib/web_ui/lib/src/engine/semantics/incrementable.dart index eb294de0f4f..46ff1ff8300 100644 --- a/engine/src/flutter/lib/web_ui/lib/src/engine/semantics/incrementable.dart +++ b/engine/src/flutter/lib/web_ui/lib/src/engine/semantics/incrementable.dart @@ -71,6 +71,9 @@ class SemanticIncrementable extends SemanticRole { _focusManager.manage(semanticsObject.id, _element); } + @override + bool get acceptsPointerEvents => true; + @override bool focusAsRouteDefault() { _element.focusWithoutScroll(); diff --git a/engine/src/flutter/lib/web_ui/lib/src/engine/semantics/semantics.dart b/engine/src/flutter/lib/web_ui/lib/src/engine/semantics/semantics.dart index d00b0f2977f..01b3df7d793 100644 --- a/engine/src/flutter/lib/web_ui/lib/src/engine/semantics/semantics.dart +++ b/engine/src/flutter/lib/web_ui/lib/src/engine/semantics/semantics.dart @@ -597,17 +597,7 @@ abstract class SemanticRole { return semanticsObject.scopesRoute; } - // Only accept pointer events for leaf nodes with interactive semantics. - // This prevents non-interactive leaf nodes (like empty containers in dialogs) - // from intercepting pointer events meant for underlying widgets like modal - // barriers. - return semanticsObject.isTappable || - semanticsObject.isButton || - semanticsObject.isCheckable || - semanticsObject.flags.isTextField || - semanticsObject.flags.isLink || - semanticsObject.flags.isSlider || - semanticsObject.isIncrementable; + return false; } /// Semantic behaviors provided by this role, if any. diff --git a/engine/src/flutter/lib/web_ui/test/engine/semantics/semantics_test.dart b/engine/src/flutter/lib/web_ui/test/engine/semantics/semantics_test.dart index 876e579fb27..13551681904 100644 --- a/engine/src/flutter/lib/web_ui/test/engine/semantics/semantics_test.dart +++ b/engine/src/flutter/lib/web_ui/test/engine/semantics/semantics_test.dart @@ -1612,26 +1612,6 @@ void _testContainer() { expect(element.style.pointerEvents, 'all', reason: 'Link nodes should accept pointer events'); }); - test('slider leaf nodes accept pointer events', () async { - final ui.SemanticsUpdateBuilder builder = ui.SemanticsUpdateBuilder(); - updateNode( - builder, - flags: const ui.SemanticsFlags(isSlider: true), - actions: ui.SemanticsAction.increase.index | ui.SemanticsAction.decrease.index, - ); - - owner().updateSemantics(builder.build()); - - final DomElement element = owner().semanticsHost.querySelector( - '#${kFlutterSemanticNodePrefix}0', - )!; - expect( - element.style.pointerEvents, - 'all', - reason: 'Slider nodes should accept pointer events', - ); - }); - test('incrementable leaf nodes accept pointer events', () async { final ui.SemanticsUpdateBuilder builder = ui.SemanticsUpdateBuilder(); updateNode(builder, actions: ui.SemanticsAction.increase.index);