From 3c72fff035e287f9e0b9340cc3921896ca86380b Mon Sep 17 00:00:00 2001 From: Grace Kloba Date: Fri, 4 Sep 2009 13:15:59 -0700 Subject: [PATCH] Some mobile sites, like m.www.yahoo.com, slashdot.org (iPhone version), have a bigger minPrefWidth than the screen width. So we don't want to force the minZoomScale to be same as defaultScale. Otherwise we won't be able to zoom out in these sites. Fix http://b/issue?id=2090718 --- core/java/android/webkit/WebView.java | 25 ++++++++++++++++------- core/java/android/webkit/WebViewCore.java | 8 ++++---- 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java index 0416c641590a2..8d21b33275761 100644 --- a/core/java/android/webkit/WebView.java +++ b/core/java/android/webkit/WebView.java @@ -5203,8 +5203,19 @@ public class WebView extends AbsoluteLayout mInZoomOverview = false; mLastScale = restoreState.mTextWrapScale; if (restoreState.mMinScale == 0) { - mMinZoomScale = DEFAULT_MIN_ZOOM_SCALE; - mMinZoomScaleFixed = false; + if (restoreState.mMobileSite) { + if (draw.mMinPrefWidth > draw.mViewPoint.x) { + mMinZoomScale = (float) viewWidth + / draw.mMinPrefWidth; + mMinZoomScaleFixed = false; + } else { + mMinZoomScale = mDefaultScale; + mMinZoomScaleFixed = true; + } + } else { + mMinZoomScale = DEFAULT_MIN_ZOOM_SCALE; + mMinZoomScaleFixed = false; + } } else { mMinZoomScale = restoreState.mMinScale; mMinZoomScaleFixed = true; @@ -5217,11 +5228,11 @@ public class WebView extends AbsoluteLayout setNewZoomScale(mLastScale, false); setContentScrollTo(restoreState.mScrollX, restoreState.mScrollY); - if (!ENABLE_DOUBLETAP_ZOOM - || !settings.getLoadWithOverviewMode()) { - } else { - if (useWideViewport - && restoreState.mViewScale == 0) { + if (ENABLE_DOUBLETAP_ZOOM && useWideViewport + && settings.getLoadWithOverviewMode()) { + if (restoreState.mViewScale == 0 + || (restoreState.mMobileSite + && mMinZoomScale < mDefaultScale)) { mInZoomOverview = true; } } diff --git a/core/java/android/webkit/WebViewCore.java b/core/java/android/webkit/WebViewCore.java index 2ff28242798b5..26d93434d4317 100644 --- a/core/java/android/webkit/WebViewCore.java +++ b/core/java/android/webkit/WebViewCore.java @@ -1572,7 +1572,10 @@ final class WebViewCore { // layout. draw.mViewPoint = new Point(mCurrentViewWidth, mCurrentViewHeight); if (WebView.ENABLE_DOUBLETAP_ZOOM && mSettings.getUseWideViewPort()) { - draw.mMinPrefWidth = Math.max(DEFAULT_VIEWPORT_WIDTH, + draw.mMinPrefWidth = Math.max( + mViewportWidth == -1 ? DEFAULT_VIEWPORT_WIDTH + : (mViewportWidth == 0 ? mCurrentViewWidth + : mViewportWidth), nativeGetContentMinPrefWidth()); } if (mRestoreState != null) { @@ -1859,9 +1862,6 @@ final class WebViewCore { if (mViewportInitialScale == 0) { mViewportInitialScale = WebView.DEFAULT_SCALE_PERCENT; } - if (mViewportMinimumScale == 0) { - mViewportMinimumScale = WebView.DEFAULT_SCALE_PERCENT; - } } if (mViewportUserScalable == false) { mViewportInitialScale = WebView.DEFAULT_SCALE_PERCENT;