From 4840b2744b8403a5bfb814c6b3f933700a38cc5e Mon Sep 17 00:00:00 2001 From: csf Date: Tue, 10 May 2022 11:27:16 +0800 Subject: [PATCH] fix scale & pan gestures conflict --- lib/pages/remote_page.dart | 5 +---- lib/widgets/gestures.dart | 31 ++----------------------------- 2 files changed, 3 insertions(+), 33 deletions(-) diff --git a/lib/pages/remote_page.dart b/lib/pages/remote_page.dart index b9032bee8..de7580ad9 100644 --- a/lib/pages/remote_page.dart +++ b/lib/pages/remote_page.dart @@ -529,6 +529,7 @@ class _RemotePageState extends State { FFI.sendMouse('up', MouseButtons.left); } }, + // scale + pan event onTwoFingerScaleUpdate: (d) { FFI.canvasModel.updateScale(d.scale / _scale); _scale = d.scale; @@ -538,10 +539,6 @@ class _RemotePageState extends State { onTwoFingerScaleEnd: (d) => _scale = 1, onTwoFingerVerticalDragUpdate: (d) { FFI.scroll(d.delta.dy / 2); - }, - onTwoFingerPanUpdate: (d) { - FFI.canvasModel.panX(d.delta.dx); - FFI.canvasModel.panY(d.delta.dy); }); } diff --git a/lib/widgets/gestures.dart b/lib/widgets/gestures.dart index 9c4b28316..8abef9d35 100644 --- a/lib/widgets/gestures.dart +++ b/lib/widgets/gestures.dart @@ -8,7 +8,6 @@ enum CustomTouchGestureState { twoFingerScale, twoFingerVerticalDrag, twoFingerHorizontalDrag, - twoFingerPan } const kScaleSlop = kPrecisePointerPanSlop / 15; @@ -29,7 +28,7 @@ class CustomTouchGestureRecognizer extends ScaleGestureRecognizer { GestureDragUpdateCallback? onOneFingerPanUpdate; GestureDragEndCallback? onOneFingerPanEnd; - // twoFingerScale + // twoFingerScale : scale + pan event GestureScaleStartCallback? onTwoFingerScaleStart; GestureScaleUpdateCallback? onTwoFingerScaleUpdate; GestureScaleEndCallback? onTwoFingerScaleEnd; @@ -44,11 +43,6 @@ class CustomTouchGestureRecognizer extends ScaleGestureRecognizer { GestureDragUpdateCallback? onTwoFingerHorizontalDragUpdate; GestureDragEndCallback? onTwoFingerHorizontalDragEnd; - // twoFingerPan - GestureDragStartCallback? onTwoFingerPanStart; - GestureDragUpdateCallback? onTwoFingerPanUpdate; - GestureDragEndCallback? onTwoFingerPanEnd; - void _init() { debugPrint("CustomTouchGestureRecognizer init"); onStart = (d) { @@ -94,11 +88,6 @@ class CustomTouchGestureRecognizer extends ScaleGestureRecognizer { onTwoFingerVerticalDragUpdate!(_getDragUpdateDetails(d)); } break; - case CustomTouchGestureState.twoFingerPan: - if (onTwoFingerPanUpdate != null) { - onTwoFingerPanUpdate!(_getDragUpdateDetails(d)); - } - break; default: break; } @@ -133,12 +122,6 @@ class CustomTouchGestureRecognizer extends ScaleGestureRecognizer { onTwoFingerVerticalDragEnd!(_getDragEndDetails(d)); } break; - case CustomTouchGestureState.twoFingerPan: - debugPrint("TwoFingerState.twoFingerPan onEnd"); - if (onTwoFingerPanEnd != null) { - onTwoFingerPanEnd!(_getDragEndDetails(d)); - } - break; default: break; } @@ -188,14 +171,6 @@ class CustomTouchGestureRecognizer extends ScaleGestureRecognizer { } _currentState = CustomTouchGestureState.twoFingerVerticalDrag; _reset(); - } else if ((_sumHorizontal.abs() + _sumVertical.abs()) > - kPrecisePointerPanSlop) { - debugPrint("start TwoFingerPan"); - _currentState = CustomTouchGestureState.twoFingerPan; - if (onTwoFingerPanStart != null) { - onTwoFingerPanStart!(_getDragStartDetails(d)); - } - _reset(); } } @@ -806,9 +781,7 @@ RawGestureDetector getMixinGestureDetector({ ..onTwoFingerScaleUpdate = onTwoFingerScaleUpdate ..onTwoFingerScaleEnd = onTwoFingerScaleEnd ..onTwoFingerHorizontalDragUpdate = onTwoFingerHorizontalDragUpdate - ..onTwoFingerVerticalDragUpdate = onTwoFingerVerticalDragUpdate - ..onTwoFingerPanStart = onTwoFingerPanStart - ..onTwoFingerPanUpdate = onTwoFingerPanUpdate; + ..onTwoFingerVerticalDragUpdate = onTwoFingerVerticalDragUpdate; }) }); }