From e86cdeb86c1158c00986ea700109c289e7686853 Mon Sep 17 00:00:00 2001 From: "Shimeng (Simon) Wang" Date: Fri, 10 Jun 2011 13:42:32 -0700 Subject: 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 --- core/java/android/webkit/ZoomManager.java | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) (limited to 'core/java/android/webkit/ZoomManager.java') 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) { -- cgit v1.2.3