summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/webkit/ZoomManager.java14
1 files changed, 11 insertions, 3 deletions
diff --git a/core/java/android/webkit/ZoomManager.java b/core/java/android/webkit/ZoomManager.java
index 88c8b2ac17b7..28f64a98bc06 100644
--- a/core/java/android/webkit/ZoomManager.java
+++ b/core/java/android/webkit/ZoomManager.java
@@ -227,10 +227,13 @@ class ZoomManager {
assert density > 0;
if (Math.abs(density - mDefaultScale) > MINIMUM_SCALE_INCREMENT) {
+ // Remember the current zoom density before it gets changed.
+ final float originalDefault = mDefaultScale;
// set the new default density
setDefaultZoomScale(density);
+ float scaleChange = (originalDefault > 0.0) ? density / originalDefault: 1.0f;
// adjust the scale if it falls outside the new zoom bounds
- setZoomScale(mActualScale, true);
+ setZoomScale(mActualScale * scaleChange, true);
}
}
@@ -629,7 +632,7 @@ class ZoomManager {
}
/* package */ float getZoomOverviewScale() {
- return computeScaleWithLimits(mWebView.getViewWidth() * mInvZoomOverviewWidth);
+ return mWebView.getViewWidth() * mInvZoomOverviewWidth;
}
public boolean isInZoomOverview() {
@@ -882,6 +885,7 @@ class ZoomManager {
if (!mMinZoomScaleFixed) {
mMinZoomScale = newZoomOverviewScale;
+ mMaxZoomScale = Math.max(mMaxZoomScale, mMinZoomScale);
}
// fit the content width to the current view for the first new picture
// after first layout.
@@ -956,6 +960,10 @@ class ZoomManager {
final Point viewSize = drawData.mViewSize;
updateZoomRange(viewState, viewSize.x, drawData.mMinPrefWidth);
setupZoomOverviewWidth(drawData, mWebView.getViewWidth());
+ if (!mMinZoomScaleFixed) {
+ mMinZoomScale = getZoomOverviewScale();
+ mMaxZoomScale = Math.max(mMaxZoomScale, mMinZoomScale);
+ }
if (!mWebView.drawHistory()) {
float scale;
@@ -971,7 +979,7 @@ class ZoomManager {
scale = overviewScale;
if (!settings.getUseWideViewPort()
|| !settings.getLoadWithOverviewMode()) {
- scale = Math.max(viewState.mTextWrapScale, scale);
+ scale = Math.max(mDefaultScale, scale);
}
if (settings.isNarrowColumnLayout() &&
settings.getUseFixedViewport()) {