Fine tune the zoom overview behavior.

issue: 3451476
Change-Id: Idc267979ae0b33f4f2fbcb9aab7739bdd1dc1eff
This commit is contained in:
Shimeng (Simon) Wang
2011-02-16 14:52:13 -08:00
parent 4f67440752
commit d75fd491ea
2 changed files with 21 additions and 4 deletions

View File

@@ -3302,7 +3302,7 @@ public class WebView extends AbsoluteLayout
}
mPageThatNeedsToSlideTitleBarOffScreen = null;
}
mZoomManager.onPageFinished(url);
injectAccessibilityForUrl(url);
}

View File

@@ -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;
}
}