Unverified Commit d97f41ca authored by Tong Mu's avatar Tong Mu Committed by GitHub

Revert "MouseRegion enter/exit event can be triggered with button pressed (#81148)" (#81557)

This reverts commit ace61f01.
parent ce9aee66
...@@ -282,13 +282,7 @@ mixin RendererBinding on BindingBase, ServicesBinding, SchedulerBinding, Gesture ...@@ -282,13 +282,7 @@ mixin RendererBinding on BindingBase, ServicesBinding, SchedulerBinding, Gesture
event is PointerAddedEvent || event is PointerAddedEvent ||
event is PointerRemovedEvent) { event is PointerRemovedEvent) {
assert(event.position != null); assert(event.position != null);
_mouseTracker!.updateWithEvent( _mouseTracker!.updateWithEvent(event, () => hitTestResult ?? renderView.hitTestMouseTrackers(event.position));
event,
// Mouse events(enter and exit) can be triggered with or without buttons pressed.
// If the button is pressed, we need to re-execute the hit test instead of
// reusing the cached results to trigger possible events.
() => (hitTestResult == null || event.down) ? renderView.hitTestMouseTrackers(event.position) : hitTestResult,
);
} }
super.dispatchEvent(event, hitTestResult); super.dispatchEvent(event, hitTestResult);
} }
......
...@@ -76,42 +76,6 @@ class _HoverFeedbackState extends State<HoverFeedback> { ...@@ -76,42 +76,6 @@ class _HoverFeedbackState extends State<HoverFeedback> {
} }
void main() { void main() {
testWidgets('onEnter and onExit can be triggered with mouse buttons pressed', (WidgetTester tester) async {
PointerEnterEvent? enter;
PointerExitEvent? exit;
await tester.pumpWidget(Center(
child: MouseRegion(
child: Container(
color: const Color.fromARGB(0xff, 0xff, 0x00, 0x00),
width: 100.0,
height: 100.0,
),
onEnter: (PointerEnterEvent details) => enter = details,
onExit: (PointerExitEvent details) => exit = details,
),
));
final TestGesture gesture = await tester.createGesture(kind: PointerDeviceKind.mouse, buttons: kPrimaryMouseButton);
await gesture.addPointer(location: Offset.zero);
await gesture.down(Offset.zero); // Press the mouse button.
addTearDown(gesture.removePointer);
await tester.pump();
enter = null;
exit = null;
// Trigger the enter event.
await gesture.moveTo(const Offset(400.0, 300.0));
expect(enter, isNotNull);
expect(enter!.position, equals(const Offset(400.0, 300.0)));
expect(enter!.localPosition, equals(const Offset(50.0, 50.0)));
expect(exit, isNull);
// Trigger the exit event.
await gesture.moveTo(const Offset(1.0, 1.0));
expect(exit, isNotNull);
expect(exit!.position, equals(const Offset(1.0, 1.0)));
expect(exit!.localPosition, equals(const Offset(-349.0, -249.0)));
});
testWidgets('detects pointer enter', (WidgetTester tester) async { testWidgets('detects pointer enter', (WidgetTester tester) async {
PointerEnterEvent? enter; PointerEnterEvent? enter;
PointerHoverEvent? move; PointerHoverEvent? move;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment