diff options
author | Shimeng (Simon) Wang <swang@google.com> | 2011-02-16 14:52:13 -0800 |
---|---|---|
committer | Shimeng (Simon) Wang <swang@google.com> | 2011-02-17 09:32:23 -0800 |
commit | d75fd491eaa7b10c20759a2b98ca78104c7047ce (patch) | |
tree | 193f8d0f5c964d225a78dfc49e64a88058d7587c /core | |
parent | 4f674407527b342692ee9cb6eacdbfb1bec764c7 (diff) | |
download | frameworks_base-d75fd491eaa7b10c20759a2b98ca78104c7047ce.zip frameworks_base-d75fd491eaa7b10c20759a2b98ca78104c7047ce.tar.gz frameworks_base-d75fd491eaa7b10c20759a2b98ca78104c7047ce.tar.bz2 |
Fine tune the zoom overview behavior.
issue: 3451476
Change-Id: Idc267979ae0b33f4f2fbcb9aab7739bdd1dc1eff
Diffstat (limited to 'core')
-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 69e658f..4ae2ee2 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 de624e0..9d472e0 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; + } } |