diff options
-rw-r--r-- | platform/android/CHANGELOG.md | 2 | ||||
-rw-r--r-- | platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapGestureDetector.java | 9 |
2 files changed, 9 insertions, 2 deletions
diff --git a/platform/android/CHANGELOG.md b/platform/android/CHANGELOG.md index 204d210aca..b89e498d21 100644 --- a/platform/android/CHANGELOG.md +++ b/platform/android/CHANGELOG.md @@ -33,6 +33,8 @@ Mapbox welcomes participation and contributions from everyone. If you'd like to - Rename to reflect the increased responsibilities introduced in prior releases * AnnotationManager refactor [#6067](https://github.com/mapbox/mapbox-gl-native/issues/6067) - Extracting all business logic related to annotations into a seperate class cfr. to core and the iOS codebase +* Gesture handling bugs + - Avoid calls to onFling when while pinch zooming [#7666](https://github.com/mapbox/mapbox-gl-native/issues/7666) ## 4.2.1 - December 22, 2016 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 053aa72fdf..bf7c1918e2 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 @@ -49,6 +49,7 @@ final class MapGestureDetector { private boolean dragStarted = false; private boolean quickZoom = false; private boolean scrollInProgress = false; + private boolean scaleGestureOccurred = false; MapGestureDetector(Context context, Transform transform, Projection projection, UiSettings uiSettings, TrackingSettings trackingSettings, AnnotationManager annotationManager) { @@ -111,7 +112,8 @@ final class MapGestureDetector { // Handle two finger tap switch (event.getActionMasked()) { case MotionEvent.ACTION_DOWN: - // First pointer down + // First pointer down, reset scaleGestureOccurred, used to avoid triggering a fling after a scale gesture #7666 + scaleGestureOccurred = false; transform.setGestureInProgress(true); break; @@ -294,7 +296,9 @@ final class MapGestureDetector { @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { - if (!trackingSettings.isScrollGestureCurrentlyEnabled()) { + if ((!trackingSettings.isScrollGestureCurrentlyEnabled()) || scaleGestureOccurred) { + // don't allow a fling is scroll is disabled + // and ignore when a scale gesture has occurred return false; } @@ -368,6 +372,7 @@ final class MapGestureDetector { return false; } + scaleGestureOccurred = true; beginTime = detector.getEventTime(); MapboxEvent.trackGestureEvent(projection, MapboxEvent.GESTURE_PINCH_START, detector.getFocusX(), detector.getFocusY(), transform.getZoom()); |