summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Adam Powell <adamp@google.com> 2011-03-11 16:39:42 -0800
committer Android (Google) Code Review <android-gerrit@google.com> 2011-03-11 16:39:42 -0800
commit87584f51a865cfe8ef19c2b24e858a63cb3e475c (patch)
tree6ec1d3fce4f3812319d4db58b30cb08e859720c6
parent7647091436c45af2d82f12c9ea9ec77fa309b49b (diff)
parentc37308f11680f597d09fa783665ba3104d6e6d5c (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.java14
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) {