diff options
| author | Mangesh Ghiware <mghiware@google.com> | 2011-12-08 13:43:55 -0800 |
|---|---|---|
| committer | Mangesh Ghiware <mghiware@google.com> | 2011-12-08 17:11:16 -0800 |
| commit | 66b2ff818bdc58465e54d7fc42772857c07fa262 (patch) | |
| tree | 3914554be49256eba1bd37f9f49f1f6587b36827 /core/java/android/webkit/ZoomManager.java | |
| parent | 63b068040f5b8f561ae9d0b9b24bb405156d7029 (diff) | |
Update computation of reading level scale.
Fixes bug 5726043 (Extra double-tap needed to zoom out to overview mode
on nytimes.com on a Stingray)
Change-Id: I54dc303f4aa81ddc38c234228adc915b9f6749dc
Diffstat (limited to 'core/java/android/webkit/ZoomManager.java')
| -rw-r--r-- | core/java/android/webkit/ZoomManager.java | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/core/java/android/webkit/ZoomManager.java b/core/java/android/webkit/ZoomManager.java index 14bdc420eb45..8ffba647ba82 100644 --- a/core/java/android/webkit/ZoomManager.java +++ b/core/java/android/webkit/ZoomManager.java @@ -316,7 +316,12 @@ class ZoomManager { * Returns the zoom scale used for reading text on a double-tap. */ public final float getReadingLevelScale() { - return mDisplayDensity * mDoubleTapZoomFactor; + return computeScaleWithLimits(computeReadingLevelScale(getZoomOverviewScale())); + } + + /* package */ final float computeReadingLevelScale(float scale) { + return Math.max(mDisplayDensity * mDoubleTapZoomFactor, + scale + MIN_DOUBLE_TAP_SCALE_INCREMENT); } public final float getInvDefaultScale() { @@ -678,7 +683,7 @@ class ZoomManager { } zoomToOverview(); } else { - zoomToReadingLevelOrMore(); + zoomToReadingLevel(); } } @@ -709,9 +714,8 @@ class ZoomManager { !mWebView.getSettings().getUseFixedViewport()); } - private void zoomToReadingLevelOrMore() { - final float zoomScale = Math.max(getReadingLevelScale(), - mActualScale + MIN_DOUBLE_TAP_SCALE_INCREMENT); + private void zoomToReadingLevel() { + final float readingScale = getReadingLevelScale(); int left = mWebView.nativeGetBlockLeftEdge(mAnchorX, mAnchorY, mActualScale); if (left != WebView.NO_LEFTEDGE) { @@ -721,13 +725,13 @@ class ZoomManager { // Re-calculate the zoom center so that the new scroll x will be // on the left edge. if (viewLeft > 0) { - mZoomCenterX = viewLeft * zoomScale / (zoomScale - mActualScale); + mZoomCenterX = viewLeft * readingScale / (readingScale - mActualScale); } else { mWebView.scrollBy(viewLeft, 0); mZoomCenterX = 0; } } - startZoomAnimation(zoomScale, + startZoomAnimation(readingScale, !mWebView.getSettings().getUseFixedViewport()); } |
