diff options
author | Shimeng (Simon) Wang <swang@google.com> | 2010-11-09 15:37:31 -0800 |
---|---|---|
committer | Shimeng (Simon) Wang <swang@google.com> | 2010-11-09 17:01:13 -0800 |
commit | dbf5ff294aafc52c1defc0b1bcf3893331ef0c27 (patch) | |
tree | b87c4516594b9562803120516d40186c0fddfafe /core | |
parent | 457087473a3c6b791f2f5e38eb525bf6ae33374c (diff) | |
download | frameworks_base-dbf5ff294aafc52c1defc0b1bcf3893331ef0c27.zip frameworks_base-dbf5ff294aafc52c1defc0b1bcf3893331ef0c27.tar.gz frameworks_base-dbf5ff294aafc52c1defc0b1bcf3893331ef0c27.tar.bz2 |
Update textwrap scale when content width changes in overview mode.
This is mostly for sites which will change content width when first
loaded such as nytimes.com.
Also zoom to reading level if the zoom overview scale has very
little diff from current actual scale.
issue: 3003933
Change-Id: Ie4b32bf6ac109eef145cd59b31f04077226b9052
Diffstat (limited to 'core')
-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 3f6b10a..c788a53 100644 --- a/core/java/android/webkit/ZoomManager.java +++ b/core/java/android/webkit/ZoomManager.java @@ -564,7 +564,7 @@ class ZoomManager { && exceedsMinScaleIncrement(mTextWrapScale, newTextWrapScale)) { mTextWrapScale = newTextWrapScale; refreshZoomScale(true); - } else if (!mInZoomOverview) { + } else if (!mInZoomOverview && willScaleTriggerZoom(getZoomOverviewScale())) { zoomToOverview(); } else { zoomToReadingLevel(); @@ -589,8 +589,6 @@ class ZoomManager { } private void zoomToOverview() { - if (!willScaleTriggerZoom(getZoomOverviewScale())) return; - // Force the titlebar fully reveal in overview mode int scrollY = mWebView.getScrollY(); if (scrollY < mWebView.getTitleHeight()) { @@ -800,9 +798,9 @@ class ZoomManager { */ public void onNewPicture(WebViewCore.DrawData drawData) { final int viewWidth = mWebView.getViewWidth(); - - if (mWebView.getSettings().getUseWideViewPort()) { - if (!mWebView.getSettings().getUseFixedViewport()) { + WebSettings settings = mWebView.getSettings(); + if (settings.getUseWideViewPort()) { + if (!settings.getUseFixedViewport()) { // limit mZoomOverviewWidth upper bound to // sMaxViewportWidth so that if the page doesn't behave // well, the WebView won't go insane. limit the lower @@ -812,7 +810,13 @@ class ZoomManager { Math.max(drawData.mMinPrefWidth, drawData.mViewSize.x)))); } else { final int contentWidth = Math.max(drawData.mContentSize.x, drawData.mMinPrefWidth); - setZoomOverviewWidth(Math.min(WebView.sMaxViewportWidth, contentWidth)); + final int newZoomOverviewWidth = Math.min(WebView.sMaxViewportWidth, contentWidth); + if (newZoomOverviewWidth != mZoomOverviewWidth) { + setZoomOverviewWidth(newZoomOverviewWidth); + if (settings.isNarrowColumnLayout() && (mInitialZoomOverview || mInZoomOverview)) { + mTextWrapScale = getReadingLevelScale(); + } + } } } |