diff options
| author | 2011-01-20 17:43:10 -0800 | |
|---|---|---|
| committer | 2011-01-20 17:45:34 -0800 | |
| commit | 66064914fc97f8b0a6cb1cc6e7a1266dd7cc4a3b (patch) | |
| tree | d0835cb0934bc11b4c34af222cc8b14a6c887c65 | |
| parent | 292f39c1201f2f08ac90d5562a7fd7070e9b32a0 (diff) | |
Keep min/max zoom scale in proportion when zoom density changes.
issue: 3341610
Change-Id: Ibf87ab499e28fddab81d4e354ec7d88f5eb86261
| -rw-r--r-- | core/java/android/webkit/ZoomManager.java | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/core/java/android/webkit/ZoomManager.java b/core/java/android/webkit/ZoomManager.java index 9a050c5bdb1d..b47fe86ec6ce 100644 --- a/core/java/android/webkit/ZoomManager.java +++ b/core/java/android/webkit/ZoomManager.java @@ -232,12 +232,26 @@ class ZoomManager { } private void setDefaultZoomScale(float defaultScale) { + final float originalDefault = mDefaultScale; mDefaultScale = defaultScale; mInvDefaultScale = 1 / defaultScale; mDefaultMaxZoomScale = defaultScale * DEFAULT_MAX_ZOOM_SCALE_FACTOR; mDefaultMinZoomScale = defaultScale * DEFAULT_MIN_ZOOM_SCALE_FACTOR; - mMaxZoomScale = mDefaultMaxZoomScale; - mMinZoomScale = mDefaultMinZoomScale; + if (originalDefault > 0.0 && mMaxZoomScale > 0.0) { + // Keeps max zoom scale when zoom density changes. + mMaxZoomScale = defaultScale / originalDefault * mMaxZoomScale; + } else { + mMaxZoomScale = mDefaultMaxZoomScale; + } + if (originalDefault > 0.0 && mMinZoomScale > 0.0) { + // Keeps min zoom scale when zoom density changes. + mMinZoomScale = defaultScale / originalDefault * mMinZoomScale; + } else { + mMinZoomScale = mDefaultMinZoomScale; + } + if (!exceedsMinScaleIncrement(mMinZoomScale, mMaxZoomScale)) { + mMaxZoomScale = mMinZoomScale; + } } public final float getScale() { @@ -468,7 +482,7 @@ class ZoomManager { mTextWrapScale = scale; } - if (scale != mActualScale || force) { + if (exceedsMinScaleIncrement(scale, mActualScale) || force) { float oldScale = mActualScale; float oldInvScale = mInvActualScale; |