diff options
| author | 2011-03-11 16:39:42 -0800 | |
|---|---|---|
| committer | 2011-03-11 16:39:42 -0800 | |
| commit | 87584f51a865cfe8ef19c2b24e858a63cb3e475c (patch) | |
| tree | 6ec1d3fce4f3812319d4db58b30cb08e859720c6 | |
| parent | 7647091436c45af2d82f12c9ea9ec77fa309b49b (diff) | |
| parent | c37308f11680f597d09fa783665ba3104d6e6d5c (diff) | |
Merge "Fix bug 4083825 - Gesture zoom locked along content edges under some circumstances" into honeycomb-mr1
| -rw-r--r-- | core/java/android/webkit/ZoomManager.java | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/core/java/android/webkit/ZoomManager.java b/core/java/android/webkit/ZoomManager.java index 1d7738875b94..72052a6089af 100644 --- a/core/java/android/webkit/ZoomManager.java +++ b/core/java/android/webkit/ZoomManager.java @@ -777,12 +777,15 @@ class ZoomManager { } private class ScaleDetectorListener implements ScaleGestureDetector.OnScaleGestureListener { + private float mAccumulatedSpan; + public boolean onScaleBegin(ScaleGestureDetector detector) { mInitialZoomOverview = false; dismissZoomPicker(); mFocusMovementQueue.clear(); mWebView.mViewManager.startZoom(); mWebView.onPinchToZoomAnimationStart(); + mAccumulatedSpan = 0; return true; } @@ -797,8 +800,15 @@ class ZoomManager { FloatMath.sqrt((mFocusX - prevFocusX) * (mFocusX - prevFocusX) + (mFocusY - prevFocusY) * (mFocusY - prevFocusY)); mFocusMovementQueue.add(focusDelta); - float deltaSpan = Math.abs(detector.getCurrentSpan() - detector.getPreviousSpan()); - return mFocusMovementQueue.getSum() > deltaSpan; + float deltaSpan = detector.getCurrentSpan() - detector.getPreviousSpan() + + mAccumulatedSpan; + final boolean result = mFocusMovementQueue.getSum() > Math.abs(deltaSpan); + if (result) { + mAccumulatedSpan += deltaSpan; + } else { + mAccumulatedSpan = 0; + } + return result; } public boolean handleScale(ScaleGestureDetector detector) { |