Unverified Commit 568ea462 authored by Justin McCandless's avatar Justin McCandless Committed by GitHub

Add delta param to scaleupdate so it matches dragupdate (#85009)

parent 6b1f45ae
...@@ -85,13 +85,21 @@ class ScaleUpdateDetails { ...@@ -85,13 +85,21 @@ class ScaleUpdateDetails {
this.verticalScale = 1.0, this.verticalScale = 1.0,
this.rotation = 0.0, this.rotation = 0.0,
this.pointerCount = 0, this.pointerCount = 0,
this.delta = Offset.zero,
}) : assert(focalPoint != null), }) : assert(focalPoint != null),
assert(delta != null),
assert(scale != null && scale >= 0.0), assert(scale != null && scale >= 0.0),
assert(horizontalScale != null && horizontalScale >= 0.0), assert(horizontalScale != null && horizontalScale >= 0.0),
assert(verticalScale != null && verticalScale >= 0.0), assert(verticalScale != null && verticalScale >= 0.0),
assert(rotation != null), assert(rotation != null),
localFocalPoint = localFocalPoint ?? focalPoint; localFocalPoint = localFocalPoint ?? focalPoint;
/// The amount the pointer has moved in the coordinate space of the event
/// receiver since the previous update.
///
/// Defaults to zero if not specified in the constructor.
final Offset delta;
/// The focal point of the pointers in contact with the screen. /// The focal point of the pointers in contact with the screen.
/// ///
/// Reported in global coordinates. /// Reported in global coordinates.
...@@ -508,6 +516,7 @@ class ScaleGestureRecognizer extends OneSequenceGestureRecognizer { ...@@ -508,6 +516,7 @@ class ScaleGestureRecognizer extends OneSequenceGestureRecognizer {
localFocalPoint: PointerEvent.transformPosition(_lastTransform, _currentFocalPoint), localFocalPoint: PointerEvent.transformPosition(_lastTransform, _currentFocalPoint),
rotation: _computeRotationFactor(), rotation: _computeRotationFactor(),
pointerCount: _pointerQueue.length, pointerCount: _pointerQueue.length,
delta: _currentFocalPoint - _initialFocalPoint,
)); ));
}); });
} }
......
...@@ -26,11 +26,13 @@ void main() { ...@@ -26,11 +26,13 @@ void main() {
double? updatedScale; double? updatedScale;
double? updatedHorizontalScale; double? updatedHorizontalScale;
double? updatedVerticalScale; double? updatedVerticalScale;
Offset? updatedDelta;
scale.onUpdate = (ScaleUpdateDetails details) { scale.onUpdate = (ScaleUpdateDetails details) {
updatedScale = details.scale; updatedScale = details.scale;
updatedHorizontalScale = details.horizontalScale; updatedHorizontalScale = details.horizontalScale;
updatedVerticalScale = details.verticalScale; updatedVerticalScale = details.verticalScale;
updatedFocalPoint = details.focalPoint; updatedFocalPoint = details.focalPoint;
updatedDelta = details.delta;
}; };
bool didEndScale = false; bool didEndScale = false;
...@@ -53,6 +55,7 @@ void main() { ...@@ -53,6 +55,7 @@ void main() {
expect(didStartScale, isFalse); expect(didStartScale, isFalse);
expect(updatedScale, isNull); expect(updatedScale, isNull);
expect(updatedFocalPoint, isNull); expect(updatedFocalPoint, isNull);
expect(updatedDelta, isNull);
expect(didEndScale, isFalse); expect(didEndScale, isFalse);
expect(didTap, isFalse); expect(didTap, isFalse);
...@@ -61,6 +64,7 @@ void main() { ...@@ -61,6 +64,7 @@ void main() {
expect(didStartScale, isFalse); expect(didStartScale, isFalse);
expect(updatedScale, isNull); expect(updatedScale, isNull);
expect(updatedFocalPoint, isNull); expect(updatedFocalPoint, isNull);
expect(updatedDelta, isNull);
expect(didEndScale, isFalse); expect(didEndScale, isFalse);
expect(didTap, isFalse); expect(didTap, isFalse);
...@@ -71,6 +75,8 @@ void main() { ...@@ -71,6 +75,8 @@ void main() {
updatedFocalPoint = null; updatedFocalPoint = null;
expect(updatedScale, 1.0); expect(updatedScale, 1.0);
updatedScale = null; updatedScale = null;
expect(updatedDelta, const Offset(20.0, 30.0));
updatedDelta = null;
expect(didEndScale, isFalse); expect(didEndScale, isFalse);
expect(didTap, isFalse); expect(didTap, isFalse);
...@@ -86,6 +92,7 @@ void main() { ...@@ -86,6 +92,7 @@ void main() {
didEndScale = false; didEndScale = false;
expect(updatedScale, isNull); expect(updatedScale, isNull);
expect(updatedFocalPoint, isNull); expect(updatedFocalPoint, isNull);
expect(updatedDelta, isNull);
expect(didStartScale, isFalse); expect(didStartScale, isFalse);
// Zoom in // Zoom in
...@@ -97,9 +104,11 @@ void main() { ...@@ -97,9 +104,11 @@ void main() {
expect(updatedScale, 2.0); expect(updatedScale, 2.0);
expect(updatedHorizontalScale, 2.0); expect(updatedHorizontalScale, 2.0);
expect(updatedVerticalScale, 2.0); expect(updatedVerticalScale, 2.0);
expect(updatedDelta, const Offset(-5.0, -5.0));
updatedScale = null; updatedScale = null;
updatedHorizontalScale = null; updatedHorizontalScale = null;
updatedVerticalScale = null; updatedVerticalScale = null;
updatedDelta = null;
expect(didEndScale, isFalse); expect(didEndScale, isFalse);
expect(didTap, isFalse); expect(didTap, isFalse);
...@@ -109,6 +118,7 @@ void main() { ...@@ -109,6 +118,7 @@ void main() {
expect(updatedScale, 0.5); expect(updatedScale, 0.5);
expect(updatedHorizontalScale, 0.5); expect(updatedHorizontalScale, 0.5);
expect(updatedVerticalScale, 0.5); expect(updatedVerticalScale, 0.5);
expect(updatedDelta, const Offset(2.5, 2.5));
expect(didTap, isFalse); expect(didTap, isFalse);
// Horizontal scaling // Horizontal scaling
...@@ -120,9 +130,11 @@ void main() { ...@@ -120,9 +130,11 @@ void main() {
tester.route(pointer2.move(const Offset(10.0, 10.0))); tester.route(pointer2.move(const Offset(10.0, 10.0)));
expect(updatedHorizontalScale, 1.0); expect(updatedHorizontalScale, 1.0);
expect(updatedVerticalScale, 2.0); expect(updatedVerticalScale, 2.0);
expect(updatedDelta, const Offset(0.0, -5.0));
tester.route(pointer2.move(const Offset(15.0, 25.0))); tester.route(pointer2.move(const Offset(15.0, 25.0)));
updatedFocalPoint = null; updatedFocalPoint = null;
updatedScale = null; updatedScale = null;
updatedDelta = null;
// Three-finger scaling // Three-finger scaling
final TestPointer pointer3 = TestPointer(3); final TestPointer pointer3 = TestPointer(3);
...@@ -136,6 +148,7 @@ void main() { ...@@ -136,6 +148,7 @@ void main() {
didEndScale = false; didEndScale = false;
expect(updatedScale, isNull); expect(updatedScale, isNull);
expect(updatedFocalPoint, isNull); expect(updatedFocalPoint, isNull);
expect(updatedDelta, isNull);
expect(didStartScale, isFalse); expect(didStartScale, isFalse);
// Zoom in // Zoom in
...@@ -146,6 +159,8 @@ void main() { ...@@ -146,6 +159,8 @@ void main() {
updatedFocalPoint = null; updatedFocalPoint = null;
expect(updatedScale, 5.0); expect(updatedScale, 5.0);
updatedScale = null; updatedScale = null;
expect(updatedDelta, const Offset(10.0, 10.0));
updatedDelta = null;
expect(didEndScale, isFalse); expect(didEndScale, isFalse);
expect(didTap, isFalse); expect(didTap, isFalse);
...@@ -158,6 +173,8 @@ void main() { ...@@ -158,6 +173,8 @@ void main() {
updatedFocalPoint = null; updatedFocalPoint = null;
expect(updatedScale, 1.0); expect(updatedScale, 1.0);
updatedScale = null; updatedScale = null;
expect(updatedDelta, Offset.zero);
updatedDelta = null;
expect(didEndScale, isFalse); expect(didEndScale, isFalse);
expect(didTap, isFalse); expect(didTap, isFalse);
...@@ -165,6 +182,7 @@ void main() { ...@@ -165,6 +182,7 @@ void main() {
expect(didStartScale, isFalse); expect(didStartScale, isFalse);
expect(updatedFocalPoint, isNull); expect(updatedFocalPoint, isNull);
expect(updatedScale, isNull); expect(updatedScale, isNull);
expect(updatedDelta, isNull);
expect(didEndScale, isTrue); expect(didEndScale, isTrue);
didEndScale = false; didEndScale = false;
expect(didTap, isFalse); expect(didTap, isFalse);
...@@ -177,6 +195,8 @@ void main() { ...@@ -177,6 +195,8 @@ void main() {
updatedFocalPoint = null; updatedFocalPoint = null;
expect(updatedScale, 2.0); expect(updatedScale, 2.0);
updatedScale = null; updatedScale = null;
expect(updatedDelta, const Offset(-2.5, -2.5));
updatedDelta = null;
// Continue rotating with two fingers // Continue rotating with two fingers
tester.route(pointer3.move(const Offset(30.0, 40.0))); tester.route(pointer3.move(const Offset(30.0, 40.0)));
...@@ -189,11 +209,14 @@ void main() { ...@@ -189,11 +209,14 @@ void main() {
updatedFocalPoint = null; updatedFocalPoint = null;
expect(updatedScale, 2.0); expect(updatedScale, 2.0);
updatedScale = null; updatedScale = null;
expect(updatedDelta, const Offset(-2.5, -2.5));
updatedDelta = null;
tester.route(pointer2.up()); tester.route(pointer2.up());
expect(didStartScale, isFalse); expect(didStartScale, isFalse);
expect(updatedFocalPoint, isNull); expect(updatedFocalPoint, isNull);
expect(updatedScale, isNull); expect(updatedScale, isNull);
expect(updatedDelta, isNull);
expect(didEndScale, isTrue); expect(didEndScale, isTrue);
didEndScale = false; didEndScale = false;
expect(didTap, isFalse); expect(didTap, isFalse);
...@@ -206,12 +229,15 @@ void main() { ...@@ -206,12 +229,15 @@ void main() {
updatedFocalPoint = null; updatedFocalPoint = null;
expect(updatedScale, 1.0); expect(updatedScale, 1.0);
updatedScale = null; updatedScale = null;
expect(updatedDelta, const Offset(-10.0, -20.0));
updatedDelta = null;
// We are done // We are done
tester.route(pointer3.up()); tester.route(pointer3.up());
expect(didStartScale, isFalse); expect(didStartScale, isFalse);
expect(updatedFocalPoint, isNull); expect(updatedFocalPoint, isNull);
expect(updatedScale, isNull); expect(updatedScale, isNull);
expect(updatedDelta, isNull);
expect(didEndScale, isTrue); expect(didEndScale, isTrue);
didEndScale = false; didEndScale = false;
expect(didTap, isFalse); expect(didTap, isFalse);
...@@ -409,9 +435,11 @@ void main() { ...@@ -409,9 +435,11 @@ void main() {
}; };
double? updatedRotation; double? updatedRotation;
Offset? updatedDelta;
scale.onUpdate = (ScaleUpdateDetails details) { scale.onUpdate = (ScaleUpdateDetails details) {
updatedRotation = details.rotation; updatedRotation = details.rotation;
updatedFocalPoint = details.focalPoint; updatedFocalPoint = details.focalPoint;
updatedDelta = details.delta;
}; };
bool didEndScale = false; bool didEndScale = false;
...@@ -434,6 +462,7 @@ void main() { ...@@ -434,6 +462,7 @@ void main() {
expect(didStartScale, isFalse); expect(didStartScale, isFalse);
expect(updatedRotation, isNull); expect(updatedRotation, isNull);
expect(updatedFocalPoint, isNull); expect(updatedFocalPoint, isNull);
expect(updatedDelta, isNull);
expect(didEndScale, isFalse); expect(didEndScale, isFalse);
expect(didTap, isFalse); expect(didTap, isFalse);
...@@ -444,6 +473,8 @@ void main() { ...@@ -444,6 +473,8 @@ void main() {
expect(updatedFocalPoint, const Offset(20.0, 30.0)); expect(updatedFocalPoint, const Offset(20.0, 30.0));
updatedFocalPoint = null; updatedFocalPoint = null;
expect(updatedDelta, const Offset(20.0, 30.0));
updatedDelta = null;
expect(updatedRotation, 0.0); expect(updatedRotation, 0.0);
updatedRotation = null; updatedRotation = null;
expect(didEndScale, isFalse); expect(didEndScale, isFalse);
...@@ -460,16 +491,18 @@ void main() { ...@@ -460,16 +491,18 @@ void main() {
expect(didEndScale, isTrue); expect(didEndScale, isTrue);
didEndScale = false; didEndScale = false;
expect(updatedFocalPoint, isNull); expect(updatedFocalPoint, isNull);
expect(updatedDelta, isNull);
expect(updatedRotation, isNull); expect(updatedRotation, isNull);
expect(didStartScale, isFalse); expect(didStartScale, isFalse);
// Zoom in // Zoom in
tester.route(pointer2.move(const Offset(40.0, 50.0))); tester.route(pointer2.move(const Offset(40.0, 50.0)));
expect(didStartScale, isTrue); expect(didStartScale, isTrue);
didStartScale = false; didStartScale = false;
expect(updatedFocalPoint, const Offset(30.0, 40.0)); expect(updatedFocalPoint, const Offset(30.0, 40.0));
updatedFocalPoint = null; updatedFocalPoint = null;
expect(updatedDelta, const Offset(5.0, 5.0));
updatedDelta = null;
expect(updatedRotation, 0.0); expect(updatedRotation, 0.0);
updatedRotation = null; updatedRotation = null;
expect(didEndScale, isFalse); expect(didEndScale, isFalse);
...@@ -479,6 +512,8 @@ void main() { ...@@ -479,6 +512,8 @@ void main() {
tester.route(pointer2.move(const Offset(0.0, 10.0))); tester.route(pointer2.move(const Offset(0.0, 10.0)));
expect(updatedFocalPoint, const Offset(10.0, 20.0)); expect(updatedFocalPoint, const Offset(10.0, 20.0));
updatedFocalPoint = null; updatedFocalPoint = null;
expect(updatedDelta, const Offset(-15.0, -15.0));
updatedDelta = null;
expect(updatedRotation, math.pi); expect(updatedRotation, math.pi);
updatedRotation = null; updatedRotation = null;
expect(didEndScale, isFalse); expect(didEndScale, isFalse);
...@@ -495,6 +530,7 @@ void main() { ...@@ -495,6 +530,7 @@ void main() {
expect(didEndScale, isTrue); expect(didEndScale, isTrue);
didEndScale = false; didEndScale = false;
expect(updatedFocalPoint, isNull); expect(updatedFocalPoint, isNull);
expect(updatedDelta, isNull);
expect(updatedRotation, isNull); expect(updatedRotation, isNull);
expect(didStartScale, isFalse); expect(didStartScale, isFalse);
...@@ -504,6 +540,8 @@ void main() { ...@@ -504,6 +540,8 @@ void main() {
didStartScale = false; didStartScale = false;
expect(updatedFocalPoint, const Offset(25.0, 35.0)); expect(updatedFocalPoint, const Offset(25.0, 35.0));
updatedFocalPoint = null; updatedFocalPoint = null;
expect(updatedDelta, const Offset(10.0, 10.0));
updatedDelta = null;
expect(updatedRotation, 0.0); expect(updatedRotation, 0.0);
updatedRotation = null; updatedRotation = null;
expect(didEndScale, isFalse); expect(didEndScale, isFalse);
...@@ -516,6 +554,8 @@ void main() { ...@@ -516,6 +554,8 @@ void main() {
expect(didStartScale, isFalse); expect(didStartScale, isFalse);
expect(updatedFocalPoint, const Offset(20.0, 30.0)); expect(updatedFocalPoint, const Offset(20.0, 30.0));
updatedFocalPoint = null; updatedFocalPoint = null;
expect(updatedDelta, const Offset(5.0, 5.0));
updatedDelta = null;
expect(updatedRotation, 0.0); expect(updatedRotation, 0.0);
updatedRotation = null; updatedRotation = null;
expect(didEndScale, isFalse); expect(didEndScale, isFalse);
...@@ -524,18 +564,20 @@ void main() { ...@@ -524,18 +564,20 @@ void main() {
tester.route(pointer1.up()); tester.route(pointer1.up());
expect(didStartScale, isFalse); expect(didStartScale, isFalse);
expect(updatedFocalPoint, isNull); expect(updatedFocalPoint, isNull);
expect(updatedDelta, isNull);
expect(updatedRotation, isNull); expect(updatedRotation, isNull);
expect(didEndScale, isTrue); expect(didEndScale, isTrue);
didEndScale = false; didEndScale = false;
expect(didTap, isFalse); expect(didTap, isFalse);
// Continue scaling with two fingers // Continue scaling with two fingers
tester.route(pointer3.move(const Offset(10.0, 20.0))); tester.route(pointer3.move(const Offset(10.0, 20.0)));
expect(didStartScale, isTrue); expect(didStartScale, isTrue);
didStartScale = false; didStartScale = false;
expect(updatedFocalPoint, const Offset(15.0, 25.0)); expect(updatedFocalPoint, const Offset(15.0, 25.0));
updatedFocalPoint = null; updatedFocalPoint = null;
expect(updatedDelta, const Offset(-2.5, -2.5));
updatedDelta = null;
expect(updatedRotation, 0.0); expect(updatedRotation, 0.0);
updatedRotation = null; updatedRotation = null;
...@@ -543,17 +585,22 @@ void main() { ...@@ -543,17 +585,22 @@ void main() {
tester.route(pointer3.move(const Offset(30.0, 40.0))); tester.route(pointer3.move(const Offset(30.0, 40.0)));
expect(updatedFocalPoint, const Offset(25.0, 35.0)); expect(updatedFocalPoint, const Offset(25.0, 35.0));
updatedFocalPoint = null; updatedFocalPoint = null;
expect(updatedDelta, const Offset(7.5, 7.5));
updatedDelta = null;
expect(updatedRotation, - math.pi); expect(updatedRotation, - math.pi);
updatedRotation = null; updatedRotation = null;
tester.route(pointer3.move(const Offset(10.0, 20.0))); tester.route(pointer3.move(const Offset(10.0, 20.0)));
expect(updatedFocalPoint, const Offset(15.0, 25.0)); expect(updatedFocalPoint, const Offset(15.0, 25.0));
updatedFocalPoint = null; updatedFocalPoint = null;
expect(updatedDelta, const Offset(-2.5, -2.5));
updatedDelta = null;
expect(updatedRotation, 0.0); expect(updatedRotation, 0.0);
updatedRotation = null; updatedRotation = null;
tester.route(pointer2.up()); tester.route(pointer2.up());
expect(didStartScale, isFalse); expect(didStartScale, isFalse);
expect(updatedFocalPoint, isNull); expect(updatedFocalPoint, isNull);
expect(updatedDelta, isNull);
expect(updatedRotation, isNull); expect(updatedRotation, isNull);
expect(didEndScale, isTrue); expect(didEndScale, isTrue);
didEndScale = false; didEndScale = false;
...@@ -563,6 +610,7 @@ void main() { ...@@ -563,6 +610,7 @@ void main() {
tester.route(pointer3.up()); tester.route(pointer3.up());
expect(didStartScale, isFalse); expect(didStartScale, isFalse);
expect(updatedFocalPoint, isNull); expect(updatedFocalPoint, isNull);
expect(updatedDelta, isNull);
expect(updatedRotation, isNull); expect(updatedRotation, isNull);
expect(didEndScale, isFalse); expect(didEndScale, isFalse);
didEndScale = false; didEndScale = false;
......
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