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 46ff1ff8300..f696d6f3437 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
@@ -72,7 +72,7 @@ class SemanticIncrementable extends SemanticRole {
}
@override
- bool get acceptsPointerEvents => true;
+ bool get shouldAcceptPointerEvents => true;
@override
bool focusAsRouteDefault() {
diff --git a/engine/src/flutter/lib/web_ui/lib/src/engine/semantics/platform_view.dart b/engine/src/flutter/lib/web_ui/lib/src/engine/semantics/platform_view.dart
index b67060078a0..2d209646ad7 100644
--- a/engine/src/flutter/lib/web_ui/lib/src/engine/semantics/platform_view.dart
+++ b/engine/src/flutter/lib/web_ui/lib/src/engine/semantics/platform_view.dart
@@ -33,7 +33,7 @@ class SemanticPlatformView extends SemanticRole {
/// This is so that the platform views are not obscured by semantic elements
/// and can be reached by inspecting the web page.
@override
- bool get acceptsPointerEvents => false;
+ bool get shouldAcceptPointerEvents => false;
@override
void update() {
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 0363b650574..d501979c9c0 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
@@ -602,7 +602,7 @@ abstract class SemanticRole {
///
/// This approach allows framework full control when specified, with reasonable
/// fallback inference for backward compatibility.
- bool get acceptsPointerEvents {
+ bool get shouldAcceptPointerEvents {
final hitTestBehavior = semanticsObject.hitTestBehavior;
// TIER 1: Framework Declaration
@@ -646,22 +646,6 @@ abstract class SemanticRole {
}
}
- // Route-scoped containers accept pointer events as a fallback.
- // This fixes the dialog dismissal bug (issue #149001) by ensuring that
- // dialog containers act as barriers, preventing clicks on empty space
- // from passing through to the modal barrier underneath.
- //
- // Note: Ideally, the framework should explicitly set
- // SemanticsHitTestBehavior.opaque for dialogs instead of relying on this
- // engine-side inference. This fallback exists for backward compatibility
- // and cases where framework doesn't specify the behavior.
- if (semanticsObject.hasChildren) {
- return semanticsObject.scopesRoute;
- }
-
- // Leaf nodes default to transparent.
- // Non-interactive leaf nodes (like empty space) should not intercept
- // pointer events.
return false;
}
@@ -1879,7 +1863,7 @@ class SemanticsObject {
// Apply updates to the DOM.
_updateRole();
- if (semanticRole!.acceptsPointerEvents) {
+ if (semanticRole!.shouldAcceptPointerEvents) {
element.style.pointerEvents = 'all';
} else {
element.style.pointerEvents = 'none';
diff --git a/engine/src/flutter/lib/web_ui/lib/src/engine/semantics/text_field.dart b/engine/src/flutter/lib/web_ui/lib/src/engine/semantics/text_field.dart
index e86283c0911..fb7396f4287 100644
--- a/engine/src/flutter/lib/web_ui/lib/src/engine/semantics/text_field.dart
+++ b/engine/src/flutter/lib/web_ui/lib/src/engine/semantics/text_field.dart
@@ -208,7 +208,7 @@ class SemanticTextField extends SemanticRole {
}
@override
- bool get acceptsPointerEvents => true;
+ bool get shouldAcceptPointerEvents => true;
/// The element used for editing, e.g. ``, `