diff options
| author | Mangesh Ghiware <mghiware@google.com> | 2011-10-12 14:25:41 -0700 |
|---|---|---|
| committer | Mangesh Ghiware <mghiware@google.com> | 2011-10-12 15:24:29 -0700 |
| commit | edb528ef52fd9b0148d559c5e596cf9bb9a6d2f9 (patch) | |
| tree | 722df5f2e08b8192f55eb8769540281d04966510 /core/java/android/webkit/ZoomManager.java | |
| parent | c351ab473400ff15e53c33ab57cf8286c4bfad7a (diff) | |
Add setting for configuring zoom level on double-tap.
In overview mode, text wrap is done at reading level scale. If user
changes double-tap zoom in overview mode, reflow text at the new scale.
In any other mode, a double-tap will take user to overview mode, at
which point, the text will be reflowed at the updated reading level
scale.
Bug: 5312461
Change-Id: I29be34a32246019101a9a875e1758e22b5af2bd3
Diffstat (limited to 'core/java/android/webkit/ZoomManager.java')
| -rw-r--r-- | core/java/android/webkit/ZoomManager.java | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/core/java/android/webkit/ZoomManager.java b/core/java/android/webkit/ZoomManager.java index 7f526e7e7c1b..206142a5b38b 100644 --- a/core/java/android/webkit/ZoomManager.java +++ b/core/java/android/webkit/ZoomManager.java @@ -145,11 +145,11 @@ class ZoomManager { private float mInvDefaultScale; /* - * The scale factor that is used to determine the zoom level for reading text. - * The value is initially set to equal the display density. - * TODO: Support changing this in WebSettings + * The logical density of the display. This is a scaling factor for the + * Density Independent Pixel unit, where one DIP is one pixel on an + * approximately 160 dpi screen (see android.util.DisplayMetrics.density) */ - private float mReadingLevelScale; + private float mDisplayDensity; /* * The scale factor that is used as the minimum increment when going from @@ -233,11 +233,11 @@ class ZoomManager { public void init(float density) { assert density > 0; + mDisplayDensity = density; setDefaultZoomScale(density); mActualScale = density; mInvActualScale = 1 / density; - mReadingLevelScale = density; - mTextWrapScale = density; + mTextWrapScale = getReadingLevelScale(); } /** @@ -310,8 +310,11 @@ class ZoomManager { return mInitialScale > 0 ? mInitialScale : mDefaultScale; } + /** + * Returns the zoom scale used for reading text on a double-tap. + */ public final float getReadingLevelScale() { - return mReadingLevelScale; + return mDisplayDensity * mWebView.getSettings().getDoubleTapZoom() / 100.0f; } public final float getInvDefaultScale() { @@ -510,6 +513,13 @@ class ZoomManager { return mZoomScale != 0 || mInHWAcceleratedZoom; } + public void updateDoubleTapZoom() { + if (mInZoomOverview) { + mTextWrapScale = getReadingLevelScale(); + refreshZoomScale(true); + } + } + public void refreshZoomScale(boolean reflowText) { setZoomScale(mActualScale, reflowText, true); } |
