diff --git a/packages/flutter/lib/src/gestures/converter.dart b/packages/flutter/lib/src/gestures/converter.dart index fc71a6816c..aea352e1fe 100644 --- a/packages/flutter/lib/src/gestures/converter.dart +++ b/packages/flutter/lib/src/gestures/converter.dart @@ -337,7 +337,6 @@ class PointerEventConverter { position: position, buttons: datum.buttons, obscured: datum.obscured, - pressure: datum.pressure, pressureMin: datum.pressureMin, pressureMax: datum.pressureMax, distance: datum.distance, @@ -364,7 +363,6 @@ class PointerEventConverter { position: state.lastPosition, // Change position in Hover buttons: datum.buttons, obscured: datum.obscured, - pressure: datum.pressure, pressureMin: datum.pressureMin, pressureMax: datum.pressureMax, distance: datum.distance, diff --git a/packages/flutter/lib/src/gestures/events.dart b/packages/flutter/lib/src/gestures/events.dart index 600b25f509..f397b2fad3 100644 --- a/packages/flutter/lib/src/gestures/events.dart +++ b/packages/flutter/lib/src/gestures/events.dart @@ -372,7 +372,6 @@ class PointerAddedEvent extends PointerEvent { int device = 0, Offset position = Offset.zero, bool obscured = false, - double pressure = 0.0, double pressureMin = 1.0, double pressureMax = 1.0, double distance = 0.0, @@ -387,7 +386,7 @@ class PointerAddedEvent extends PointerEvent { device: device, position: position, obscured: obscured, - pressure: pressure, + pressure: 0.0, pressureMin: pressureMin, pressureMax: pressureMax, distance: distance, @@ -412,7 +411,6 @@ class PointerRemovedEvent extends PointerEvent { PointerDeviceKind kind = PointerDeviceKind.touch, int device = 0, bool obscured = false, - double pressure = 0.0, double pressureMin = 1.0, double pressureMax = 1.0, double distanceMax = 0.0, @@ -424,7 +422,7 @@ class PointerRemovedEvent extends PointerEvent { device: device, position: null, obscured: obscured, - pressure: pressure, + pressure: 0.0, pressureMin: pressureMin, pressureMax: pressureMax, distanceMax: distanceMax, @@ -455,7 +453,6 @@ class PointerHoverEvent extends PointerEvent { Offset delta = Offset.zero, int buttons = 0, bool obscured = false, - double pressure = 0.0, double pressureMin = 1.0, double pressureMax = 1.0, double distance = 0.0, @@ -477,7 +474,7 @@ class PointerHoverEvent extends PointerEvent { buttons: buttons, down: false, obscured: obscured, - pressure: pressure, + pressure: 0.0, pressureMin: pressureMin, pressureMax: pressureMax, distance: distance, @@ -515,7 +512,6 @@ class PointerEnterEvent extends PointerEvent { Offset delta = Offset.zero, int buttons = 0, bool obscured = false, - double pressure = 0.0, double pressureMin = 1.0, double pressureMax = 1.0, double distance = 0.0, @@ -537,7 +533,7 @@ class PointerEnterEvent extends PointerEvent { buttons: buttons, down: false, obscured: obscured, - pressure: pressure, + pressure: 0.0, pressureMin: pressureMin, pressureMax: pressureMax, distance: distance, @@ -561,16 +557,14 @@ class PointerEnterEvent extends PointerEvent { /// Creates an enter event from a [PointerEvent]. /// /// This is used by the [MouseTracker] to synthesize enter events. - PointerEnterEvent.fromMouseEvent(PointerEvent event) : super( + PointerEnterEvent.fromMouseEvent(PointerEvent event) : this( timeStamp: event?.timeStamp, kind: event?.kind, device: event?.device, position: event?.position, delta: event?.delta, buttons: event?.buttons, - down: event?.down, obscured: event?.obscured, - pressure: event?.pressure, pressureMin: event?.pressureMin, pressureMax: event?.pressureMax, distance: event?.distance, @@ -608,7 +602,6 @@ class PointerExitEvent extends PointerEvent { Offset delta = Offset.zero, int buttons = 0, bool obscured = false, - double pressure = 0.0, double pressureMin = 1.0, double pressureMax = 1.0, double distance = 0.0, @@ -630,7 +623,7 @@ class PointerExitEvent extends PointerEvent { buttons: buttons, down: false, obscured: obscured, - pressure: pressure, + pressure: 0.0, pressureMin: pressureMin, pressureMax: pressureMax, distance: distance, @@ -654,16 +647,14 @@ class PointerExitEvent extends PointerEvent { /// Creates an exit event from a [PointerEvent]. /// /// This is used by the [MouseTracker] to synthesize exit events. - PointerExitEvent.fromMouseEvent(PointerEvent event) : super( + PointerExitEvent.fromMouseEvent(PointerEvent event) : this( timeStamp: event?.timeStamp, kind: event?.kind, device: event?.device, position: event?.position, delta: event?.delta, buttons: event?.buttons, - down: event?.down, obscured: event?.obscured, - pressure: event?.pressure, pressureMin: event?.pressureMin, pressureMax: event?.pressureMax, distance: event?.distance, @@ -800,6 +791,8 @@ class PointerUpEvent extends PointerEvent { Offset position = Offset.zero, int buttons = 0, bool obscured = false, + // Allow pressure customization here because PointerUpEvent can contain + // non-zero pressure. See https://github.com/flutter/flutter/issues/31340 double pressure = 0.0, double pressureMin = 1.0, double pressureMax = 1.0, @@ -908,7 +901,6 @@ class PointerCancelEvent extends PointerEvent { Offset position = Offset.zero, int buttons = 0, bool obscured = false, - double pressure = 0.0, double pressureMin = 1.0, double pressureMax = 1.0, double distance = 0.0, @@ -929,7 +921,7 @@ class PointerCancelEvent extends PointerEvent { buttons: buttons, down: false, obscured: obscured, - pressure: pressure, + pressure: 0.0, pressureMin: pressureMin, pressureMax: pressureMax, distance: distance, diff --git a/packages/flutter/test/gestures/events_test.dart b/packages/flutter/test/gestures/events_test.dart index 17a11e70fb..52519caf89 100644 --- a/packages/flutter/test/gestures/events_test.dart +++ b/packages/flutter/test/gestures/events_test.dart @@ -20,6 +20,83 @@ void main() { expect(nthStylusButton(2), kSecondaryStylusButton); }); + group('fromMouseEvent', () { + const PointerEvent hover = PointerHoverEvent( + timeStamp: Duration(days: 1), + kind: PointerDeviceKind.unknown, + device: 10, + position: Offset(101.0, 202.0), + buttons: 7, + obscured: true, + pressureMax: 2.1, + pressureMin: 1.1, + distance: 11, + distanceMax: 110, + size: 11, + radiusMajor: 11, + radiusMinor: 9, + radiusMin: 1.1, + radiusMax: 22, + orientation: 1.1, + tilt: 1.1, + synthesized: true, + ); + + test('PointerEnterEvent.fromMouseEvent', () { + final PointerEnterEvent event = PointerEnterEvent.fromMouseEvent(hover); + const PointerEnterEvent empty = PointerEnterEvent(); + expect(event.timeStamp, hover.timeStamp); + expect(event.pointer, empty.pointer); + expect(event.kind, hover.kind); + expect(event.device, hover.device); + expect(event.position, hover.position); + expect(event.buttons, hover.buttons); + expect(event.down, empty.down); + expect(event.obscured, hover.obscured); + expect(event.pressure, empty.pressure); + expect(event.pressureMin, hover.pressureMin); + expect(event.pressureMax, hover.pressureMax); + expect(event.distance, hover.distance); + expect(event.distanceMax, hover.distanceMax); + expect(event.distanceMax, hover.distanceMax); + expect(event.size, hover.size); + expect(event.radiusMajor, hover.radiusMajor); + expect(event.radiusMinor, hover.radiusMinor); + expect(event.radiusMin, hover.radiusMin); + expect(event.radiusMax, hover.radiusMax); + expect(event.orientation, hover.orientation); + expect(event.tilt, hover.tilt); + expect(event.synthesized, hover.synthesized); + }); + + test('PointerExitEvent.fromMouseEvent', () { + final PointerExitEvent event = PointerExitEvent.fromMouseEvent(hover); + const PointerExitEvent empty = PointerExitEvent(); + expect(event.timeStamp, hover.timeStamp); + expect(event.pointer, empty.pointer); + expect(event.kind, hover.kind); + expect(event.device, hover.device); + expect(event.position, hover.position); + expect(event.buttons, hover.buttons); + expect(event.down, empty.down); + expect(event.obscured, hover.obscured); + expect(event.pressure, empty.pressure); + expect(event.pressureMin, hover.pressureMin); + expect(event.pressureMax, hover.pressureMax); + expect(event.distance, hover.distance); + expect(event.distanceMax, hover.distanceMax); + expect(event.distanceMax, hover.distanceMax); + expect(event.size, hover.size); + expect(event.radiusMajor, hover.radiusMajor); + expect(event.radiusMinor, hover.radiusMinor); + expect(event.radiusMin, hover.radiusMin); + expect(event.radiusMax, hover.radiusMax); + expect(event.orientation, hover.orientation); + expect(event.tilt, hover.tilt); + expect(event.synthesized, hover.synthesized); + }); + }); + group('Default values of PointerEvents:', () { // Some parameters are intentionally set to a non-trivial value.