diff options
| author | Shimeng (Simon) Wang <swang@google.com> | 2011-02-17 09:55:36 -0800 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-02-17 09:55:36 -0800 |
| commit | 572c4a7dba7d2dc5a475b956c2a63eb5422fd66d (patch) | |
| tree | 51a8484d0b35a6fc8d69f83808cba5af79d303af /core/java/android | |
| parent | 016d37e6c557a760c6508f5c06c8e65d2492772d (diff) | |
| parent | d75fd491eaa7b10c20759a2b98ca78104c7047ce (diff) | |
Merge "Fine tune the zoom overview behavior."
Diffstat (limited to 'core/java/android')
| -rw-r--r-- | core/java/android/webkit/WebView.java | 2 | ||||
| -rw-r--r-- | core/java/android/webkit/ZoomManager.java | 23 |
2 files changed, 21 insertions, 4 deletions
diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java index 69e658f1572c..4ae2ee218295 100644 --- a/core/java/android/webkit/WebView.java +++ b/core/java/android/webkit/WebView.java @@ -3302,7 +3302,7 @@ public class WebView extends AbsoluteLayout } mPageThatNeedsToSlideTitleBarOffScreen = null; } - + mZoomManager.onPageFinished(url); injectAccessibilityForUrl(url); } diff --git a/core/java/android/webkit/ZoomManager.java b/core/java/android/webkit/ZoomManager.java index de624e085202..9d472e02ae46 100644 --- a/core/java/android/webkit/ZoomManager.java +++ b/core/java/android/webkit/ZoomManager.java @@ -875,12 +875,21 @@ class ZoomManager { // fit the content width to the current view for the first new picture // after first layout. boolean scaleHasDiff = exceedsMinScaleIncrement(newZoomOverviewScale, mActualScale); - if (!mWebView.drawHistory() && mInitialZoomOverview && scaleHasDiff) { + // Make sure the actual scale is no less than zoom overview scale. + boolean scaleLessThanOverview = + (newZoomOverviewScale - mActualScale) >= MINIMUM_SCALE_INCREMENT; + // Make sure mobile sites are correctly handled since mobile site will + // change content width after rotating. + boolean mobileSiteInOverview = mInZoomOverview && + !exceedsMinScaleIncrement(newZoomOverviewScale, 1.0f); + if (!mWebView.drawHistory() && + (mInitialZoomOverview || scaleLessThanOverview || mobileSiteInOverview) && + scaleHasDiff) { mInitialZoomOverview = false; setZoomScale(newZoomOverviewScale, !willScaleTriggerZoom(mTextWrapScale) && !mWebView.getSettings().getUseFixedViewport()); - } else if (scaleHasDiff) { - mInZoomOverview = false; + } else { + mInZoomOverview = !scaleHasDiff; } } @@ -1061,4 +1070,12 @@ class ZoomManager { public void setHardwareAccelerated() { mHardwareAccelerated = true; } + + /** + * OnPageFinished called by webview when a page is fully loaded. + */ + /* package*/ void onPageFinished(String url) { + // Turn off initial zoom overview flag when a page is fully loaded. + mInitialZoomOverview = false; + } } |
