From c010924da969a67156c6c227a6458df851072971 Mon Sep 17 00:00:00 2001 From: Huahui Wu Date: Fri, 14 Jan 2011 12:51:12 -0800 Subject: [PATCH] b/3348192 re-enable snap scrolling mode. Change-Id: I19c9a2afdf28367f623bd9bd6b25e822a06a215c --- core/java/android/webkit/WebView.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java index 8beca071f78e6..82f02ce1c9484 100644 --- a/core/java/android/webkit/WebView.java +++ b/core/java/android/webkit/WebView.java @@ -5570,6 +5570,24 @@ public class WebView extends AbsoluteLayout break; } + // Only lock dragging to one axis if we don't have a scale in progress. + // Scaling implies free-roaming movement. Note this is only ever a question + // if mZoomManager.supportsPanDuringZoom() is true. + final ScaleGestureDetector detector = + mZoomManager.getMultiTouchGestureDetector(); + if (detector == null || !detector.isInProgress()) { + // if it starts nearly horizontal or vertical, enforce it + int ax = Math.abs(deltaX); + int ay = Math.abs(deltaY); + if (ax > MAX_SLOPE_FOR_DIAG * ay) { + mSnapScrollMode = SNAP_X; + mSnapPositive = deltaX > 0; + } else if (ay > MAX_SLOPE_FOR_DIAG * ax) { + mSnapScrollMode = SNAP_Y; + mSnapPositive = deltaY > 0; + } + } + mTouchMode = TOUCH_DRAG_MODE; mLastTouchX = x; mLastTouchY = y;