android/source/src/java/org/libreoffice/LOKitThread.java                 |    
8 +++--
 android/source/src/java/org/mozilla/gecko/ZoomConstraints.java           |   
14 --------
 android/source/src/java/org/mozilla/gecko/gfx/JavaPanZoomController.java |   
16 ++--------
 3 files changed, 10 insertions(+), 28 deletions(-)

New commits:
commit 377a8c8ed7dd997d1ac96918b69f805880d208af
Author:     Michael Weghorn <m.wegh...@posteo.de>
AuthorDate: Tue Jan 17 08:40:41 2023 +0100
Commit:     Michael Weghorn <m.wegh...@posteo.de>
CommitDate: Tue Jan 17 11:08:27 2023 +0000

    tdf#153058 android: Use "fit page" for min zoom level
    
    So far, Android Viewer was using "fit page width"
    as minimum zoom level, meaning that it was impossible
    to zoom out to see the full page, e.g. when opening
    a doc with page size A4 portrait and using
    the device in landscape mode.
    
    Change the minimum zoom level to take the page
    height into account as well, i.e. adapt the minimum
    zoom level to be "fit whole page" to allow doing that.
    
    However, keep applying "fit page width" as
    zoom level when double-tapping, by using
    the "fit page width" zoom level as new
    default zoom level and applying the default
    instead of the minimum zoom level on
    double-tap.
    ("Fit page width" is probably more desirable
    than "fit whole page" at least when used on small
    devices, at least in all cases where
    writing is in horizontal direction, so the user
    can see the current portion of text and scroll
    down to continue reading/writing.)
    
    Use on double-tap is currently the only use for the
    default zoom level, the only previous occurence
    was effectively unused since
    
            commit 9ab43aebad67383057d2cc3f754ce2193fa78b4e
            Date:   Wed Dec 4 17:18:20 2019 +0100
    
                android: Allow zooming for Calc as well
    
    and finally dropped with
    Change-Id I702874f1d9161e5cef660bb4c4a0b7864d6e3c09
    ("android: Drop superfluous ZoomConstraints#mAllow{,DoubleTap}Zoom").
    
    Change-Id: Ica5d8207bc19a81173143fcb5c3747dc89f9fa81
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/145658
    Tested-by: Jenkins
    Reviewed-by: Michael Weghorn <m.wegh...@posteo.de>

diff --git a/android/source/src/java/org/libreoffice/LOKitThread.java 
b/android/source/src/java/org/libreoffice/LOKitThread.java
index 27568ace5599..fd40c3089102 100644
--- a/android/source/src/java/org/libreoffice/LOKitThread.java
+++ b/android/source/src/java/org/libreoffice/LOKitThread.java
@@ -184,9 +184,11 @@ class LOKitThread extends Thread {
     private void updateZoomConstraints() {
         if (mTileProvider == null) return;
         mLayerClient = mContext.getLayerClient();
-        // Set min zoom to the page width so that you cannot zoom below page 
width
-        final float minZoom = 
mLayerClient.getViewportMetrics().getWidth()/mTileProvider.getPageWidth();
-        mLayerClient.setZoomConstraints(new ZoomConstraints(1f, minZoom, 0f));
+        // Set default zoom to the page width and min zoom so that the whole 
page is visible
+        final float pageHeightZoom = 
mLayerClient.getViewportMetrics().getHeight() / mTileProvider.getPageHeight();
+        final float pageWidthZoom = 
mLayerClient.getViewportMetrics().getWidth() / mTileProvider.getPageWidth();
+        final float minZoom = Math.min(pageWidthZoom, pageHeightZoom);
+        mLayerClient.setZoomConstraints(new ZoomConstraints(pageWidthZoom, 
minZoom, 0f));
     }
 
     /**
diff --git 
a/android/source/src/java/org/mozilla/gecko/gfx/JavaPanZoomController.java 
b/android/source/src/java/org/mozilla/gecko/gfx/JavaPanZoomController.java
index ef3d28e8ebb3..f1973d980e32 100644
--- a/android/source/src/java/org/mozilla/gecko/gfx/JavaPanZoomController.java
+++ b/android/source/src/java/org/mozilla/gecko/gfx/JavaPanZoomController.java
@@ -983,7 +983,7 @@ class JavaPanZoomController
         PointF pointOfTap = getMotionInDocumentCoordinates(motionEvent);
         ImmutableViewportMetrics metrics = getMetrics();
         float newZoom = metrics.getZoomFactor() >=
-                DOUBLE_TAP_THRESHOLD ? 
mTarget.getZoomConstraints().getMinZoom() : DOUBLE_TAP_THRESHOLD;
+                DOUBLE_TAP_THRESHOLD ? 
mTarget.getZoomConstraints().getDefaultZoom() : DOUBLE_TAP_THRESHOLD;
         // calculate new top_left point from the point of tap
         float ratio = newZoom/metrics.getZoomFactor();
         float newLeft = pointOfTap.x - 1/ratio * (pointOfTap.x - 
metrics.getOrigin().x / metrics.getZoomFactor());
commit 7c399767053b1cc6f68beccfbbb084c2891fe05e
Author:     Michael Weghorn <m.wegh...@posteo.de>
AuthorDate: Tue Jan 17 08:31:54 2023 +0100
Commit:     Michael Weghorn <m.wegh...@posteo.de>
CommitDate: Tue Jan 17 11:08:21 2023 +0000

    android: Drop superfluous ZoomConstraints#mAllow{,DoubleTap}Zoom
    
    Both members are always set to true since
    
        commit 9ab43aebad67383057d2cc3f754ce2193fa78b4e
        Date:   Wed Dec 4 17:18:20 2019 +0100
    
            android: Allow zooming for Calc as well
    
    , so drop the two now superfluous members and
    getters.
    
    Change-Id: I702874f1d9161e5cef660bb4c4a0b7864d6e3c09
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/145657
    Tested-by: Jenkins
    Reviewed-by: Michael Weghorn <m.wegh...@posteo.de>

diff --git a/android/source/src/java/org/libreoffice/LOKitThread.java 
b/android/source/src/java/org/libreoffice/LOKitThread.java
index c29f98461fb9..27568ace5599 100644
--- a/android/source/src/java/org/libreoffice/LOKitThread.java
+++ b/android/source/src/java/org/libreoffice/LOKitThread.java
@@ -186,7 +186,7 @@ class LOKitThread extends Thread {
         mLayerClient = mContext.getLayerClient();
         // Set min zoom to the page width so that you cannot zoom below page 
width
         final float minZoom = 
mLayerClient.getViewportMetrics().getWidth()/mTileProvider.getPageWidth();
-        mLayerClient.setZoomConstraints(new ZoomConstraints(true, 1f, minZoom, 
0f));
+        mLayerClient.setZoomConstraints(new ZoomConstraints(1f, minZoom, 0f));
     }
 
     /**
diff --git a/android/source/src/java/org/mozilla/gecko/ZoomConstraints.java 
b/android/source/src/java/org/mozilla/gecko/ZoomConstraints.java
index f1672ba3dd76..dbe278827279 100644
--- a/android/source/src/java/org/mozilla/gecko/ZoomConstraints.java
+++ b/android/source/src/java/org/mozilla/gecko/ZoomConstraints.java
@@ -6,28 +6,16 @@
 package org.mozilla.gecko;
 
 public final class ZoomConstraints {
-    private final boolean mAllowZoom;
-    private final boolean mAllowDoubleTapZoom;
     private final float mDefaultZoom;
     private final float mMinZoom;
     private final float mMaxZoom;
 
-    public ZoomConstraints(boolean allowZoom, float defaultZoom, float 
minZoom, float maxZoom) {
-        mAllowZoom = allowZoom;
-        mAllowDoubleTapZoom = allowZoom;
+    public ZoomConstraints(float defaultZoom, float minZoom, float maxZoom) {
         mDefaultZoom = defaultZoom;
         mMinZoom = minZoom;
         mMaxZoom = maxZoom;
     }
 
-    public final boolean getAllowZoom() {
-        return mAllowZoom;
-    }
-
-    public final boolean getAllowDoubleTapZoom() {
-        return mAllowDoubleTapZoom;
-    }
-
     public final float getDefaultZoom() {
         return mDefaultZoom;
     }
diff --git 
a/android/source/src/java/org/mozilla/gecko/gfx/JavaPanZoomController.java 
b/android/source/src/java/org/mozilla/gecko/gfx/JavaPanZoomController.java
index 697980af397d..ef3d28e8ebb3 100644
--- a/android/source/src/java/org/mozilla/gecko/gfx/JavaPanZoomController.java
+++ b/android/source/src/java/org/mozilla/gecko/gfx/JavaPanZoomController.java
@@ -744,11 +744,6 @@ class JavaPanZoomController
         if (constraints.getMaxZoom() > 0)
             maxZoomFactor = constraints.getMaxZoom();
 
-        if (!constraints.getAllowZoom()) {
-            // If allowZoom is false, clamp to the default zoom level.
-            maxZoomFactor = minZoomFactor = constraints.getDefaultZoom();
-        }
-
         maxZoomFactor = Math.max(maxZoomFactor, minZoomFactor);
 
         if (zoomFactor < minZoomFactor) {
@@ -821,7 +816,7 @@ class JavaPanZoomController
         if (mState == PanZoomState.ANIMATED_ZOOM)
             return false;
 
-        if (null == mTarget.getZoomConstraints() || 
!mTarget.getZoomConstraints().getAllowZoom())
+        if (null == mTarget.getZoomConstraints())
             return false;
 
         setState(PanZoomState.PINCHING);
@@ -927,10 +922,7 @@ class JavaPanZoomController
 
     @Override
     public boolean onDown(MotionEvent motionEvent) {
-        if (mTarget.getZoomConstraints() != null)
-            mWaitForDoubleTap = 
mTarget.getZoomConstraints().getAllowDoubleTapZoom();
-        else
-            mWaitForDoubleTap = false;
+        mWaitForDoubleTap = mTarget.getZoomConstraints() != null;
         return false;
     }
 
@@ -984,7 +976,7 @@ class JavaPanZoomController
 
     @Override
     public boolean onDoubleTap(MotionEvent motionEvent) {
-        if (null == mTarget.getZoomConstraints() || 
!mTarget.getZoomConstraints().getAllowDoubleTapZoom()) {
+        if (null == mTarget.getZoomConstraints()) {
             return true;
         }
         // Double tap zooms in or out depending on the current zoom factor

Reply via email to