summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Shimeng (Simon) Wang <swang@google.com> 2011-01-20 17:43:10 -0800
committer Shimeng (Simon) Wang <swang@google.com> 2011-01-20 17:45:34 -0800
commit66064914fc97f8b0a6cb1cc6e7a1266dd7cc4a3b (patch)
treed0835cb0934bc11b4c34af222cc8b14a6c887c65
parent292f39c1201f2f08ac90d5562a7fd7070e9b32a0 (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.java20
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;