diff options
author | Łukasz Paczos <lukas.paczos@gmail.com> | 2019-06-19 18:29:16 +0200 |
---|---|---|
committer | Łukasz Paczos <lukas.paczos@gmail.com> | 2019-06-19 18:29:16 +0200 |
commit | 828b705c4d0cac0951412a819c1b27a14965cc6c (patch) | |
tree | 7cb766ff23c00052064ba095051d5fca2027dc77 | |
parent | bd481b1d60132c1b7f8ab1ebd8e363802907f9d5 (diff) | |
download | qtlocation-mapboxgl-upstream/lp-qz-14598.tar.gz |
[android] ensure to re-enable move when quickzoom finishesupstream/lp-qz-14598
Because the double tap event can be canceled and stop delivering events whenever ACTION_CANCEL or ACTION_POINTER_DOWN is dispatched, we need to make the #onScaleEnd callback responsible for re-enabling the move detector as well
-rw-r--r-- | platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapGestureDetector.java | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapGestureDetector.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapGestureDetector.java index 17d3ab0aa2..3f24ebe2ac 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapGestureDetector.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapGestureDetector.java @@ -344,8 +344,10 @@ final class MapGestureDetector { } if (motionEvent.getActionMasked() == MotionEvent.ACTION_UP) { - // re-enabled the move detector - gesturesManager.getMoveGestureDetector().setEnabled(true); + if (executeDoubleTap) { + // re-enable the move detector only if we did not start the quickzoom, otherwise, re-enable in the #onScaleEnd + gesturesManager.getMoveGestureDetector().setEnabled(true); + } if (!uiSettings.isZoomGesturesEnabled() || !uiSettings.isDoubleTapGesturesEnabled() || !executeDoubleTap) { return false; @@ -512,6 +514,13 @@ final class MapGestureDetector { @Override public void onScaleEnd(@NonNull StandardScaleGestureDetector detector, float velocityX, float velocityY) { + if (quickZoom) { + // re-enabled the move detector only if the quickzoom happened + // we need to split the responsibility of re-enabling the move detector, + // because the double tap event (where the detector is disabled) can be canceled without warning (see #14598) + gesturesManager.getMoveGestureDetector().setEnabled(true); + } + if (uiSettings.isIncreaseRotateThresholdWhenScaling()) { // resetting default angle threshold gesturesManager.getRotateGestureDetector().setAngleThreshold( |