diff options
| author | Shimeng (Simon) Wang <swang@google.com> | 2011-06-10 13:42:32 -0700 |
|---|---|---|
| committer | Shimeng (Simon) Wang <swang@google.com> | 2011-06-10 13:42:32 -0700 |
| commit | e86cdeb86c1158c00986ea700109c289e7686853 (patch) | |
| tree | 2861e662f49b2d5d7cfe76fbd46c91873a252e34 /core/java/android/webkit/ZoomManager.java | |
| parent | 82a077043fe8ea8b7bc3575afc3f0f68b7fc193b (diff) | |
Fix reflow for mobile sites.
1. use correct mDefaultScale instead of 1.0f.
2. ignore mMinZoomScaleFixed in case of using wide viewport since
sometimes mobile site will impose a min scale while the web content
will make it bigger than overview scale.
issue: 4257815
Change-Id: Ib4ca9b4dab8585827081a32432076eeeaedecd38
Diffstat (limited to 'core/java/android/webkit/ZoomManager.java')
| -rw-r--r-- | core/java/android/webkit/ZoomManager.java | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/core/java/android/webkit/ZoomManager.java b/core/java/android/webkit/ZoomManager.java index fe6fb2f33f39..883656bd6fae 100644 --- a/core/java/android/webkit/ZoomManager.java +++ b/core/java/android/webkit/ZoomManager.java @@ -991,16 +991,16 @@ class ZoomManager { settings.getUseFixedViewport() && (mInitialZoomOverview || mInZoomOverview)) { // Keep mobile site's text wrap scale unchanged. For mobile sites, - // the text wrap scale is the same as zoom overview scale, which is 1.0f. - if (exceedsMinScaleIncrement(mTextWrapScale, 1.0f) || - exceedsMinScaleIncrement(newZoomOverviewScale, 1.0f)) { + // the text wrap scale is the same as zoom overview scale. + if (exceedsMinScaleIncrement(mTextWrapScale, mDefaultScale) || + exceedsMinScaleIncrement(newZoomOverviewScale, mDefaultScale)) { mTextWrapScale = getReadingLevelScale(); } else { mTextWrapScale = newZoomOverviewScale; } } - if (!mMinZoomScaleFixed) { + if (!mMinZoomScaleFixed || settings.getUseWideViewPort()) { mMinZoomScale = newZoomOverviewScale; mMaxZoomScale = Math.max(mMaxZoomScale, mMinZoomScale); } @@ -1013,9 +1013,9 @@ class ZoomManager { // Make sure mobile sites are correctly handled since mobile site will // change content width after rotating. boolean mobileSiteInOverview = mInZoomOverview && - !exceedsMinScaleIncrement(newZoomOverviewScale, 1.0f); + !exceedsMinScaleIncrement(newZoomOverviewScale, mDefaultScale); if (!mWebView.drawHistory() && - (scaleLessThanOverview || + ((scaleLessThanOverview && settings.getUseWideViewPort())|| ((mInitialZoomOverview || mobileSiteInOverview) && scaleHasDiff && zoomOverviewWidthChanged))) { mInitialZoomOverview = false; @@ -1071,7 +1071,8 @@ class ZoomManager { updateZoomRange(viewState, viewSize.x, drawData.mMinPrefWidth); setupZoomOverviewWidth(drawData, mWebView.getViewWidth()); final float overviewScale = getZoomOverviewScale(); - if (!mMinZoomScaleFixed) { + WebSettings settings = mWebView.getSettings(); + if (!mMinZoomScaleFixed || settings.getUseWideViewPort()) { mMinZoomScale = (mInitialScale > 0) ? Math.min(mInitialScale, overviewScale) : overviewScale; mMaxZoomScale = Math.max(mMaxZoomScale, mMinZoomScale); @@ -1079,8 +1080,6 @@ class ZoomManager { if (!mWebView.drawHistory()) { float scale; - WebSettings settings = mWebView.getSettings(); - if (mInitialScale > 0) { scale = mInitialScale; } else if (viewState.mViewScale > 0) { |
