Removed explicit flag checks from SemanticRole.acceptsPointerEvents

This commit is contained in:
flutter-zl 2025-10-14 22:45:13 -07:00
parent 6749ac5ca1
commit 69dfd15092
3 changed files with 4 additions and 31 deletions

View File

@ -71,6 +71,9 @@ class SemanticIncrementable extends SemanticRole {
_focusManager.manage(semanticsObject.id, _element);
}
@override
bool get acceptsPointerEvents => true;
@override
bool focusAsRouteDefault() {
_element.focusWithoutScroll();

View File

@ -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.

View File

@ -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);