[Libreoffice-commits] core.git: android/source

Ximeng Zu uznomis at yahoo.com
Tue Apr 18 11:02:58 UTC 2017


 android/source/src/java/org/libreoffice/LOKitThread.java                 |    6 ++++++
 android/source/src/java/org/libreoffice/LibreOfficeMainActivity.java     |    2 --
 android/source/src/java/org/mozilla/gecko/ZoomConstraints.java           |    8 ++++----
 android/source/src/java/org/mozilla/gecko/gfx/GeckoLayerClient.java      |    1 -
 android/source/src/java/org/mozilla/gecko/gfx/JavaPanZoomController.java |    4 +---
 5 files changed, 11 insertions(+), 10 deletions(-)

New commits:
commit ed900113d091431f89ccc312b55a6955ca341b9e
Author: Ximeng Zu <uznomis at yahoo.com>
Date:   Thu Mar 16 23:24:27 2017 -0500

    tdf#106368 android: restrict zoom to page width
    
    Created an overloaded constructor for ZoomConstraints class that
    takes in minZoom and maxZoom. Added calculation of minZoom
    according to page width and screen width and assigned the
    minZoom to ZoomConstraints in LOKitThread class. Deleted
    minZoom checking in the onScale method in JavaPanZoomController
    class because the checking prevented zoom-in from functioning.
    (Update: I also removed the old constructor because it is not
    used any more.)
    
    Change-Id: I89e80761efc093b3738970d4482dd735532c0397
    Reviewed-on: https://gerrit.libreoffice.org/35308
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>

diff --git a/android/source/src/java/org/libreoffice/LOKitThread.java b/android/source/src/java/org/libreoffice/LOKitThread.java
index 31d3b96440ed..4dd403dd2d0c 100644
--- a/android/source/src/java/org/libreoffice/LOKitThread.java
+++ b/android/source/src/java/org/libreoffice/LOKitThread.java
@@ -8,6 +8,7 @@ import android.view.KeyEvent;
 
 import org.libreoffice.canvas.SelectionHandle;
 import org.libreoffice.ui.LibreOfficeUIActivity;
+import org.mozilla.gecko.ZoomConstraints;
 import org.mozilla.gecko.gfx.CairoImage;
 import org.mozilla.gecko.gfx.ComposedTileLayer;
 import org.mozilla.gecko.gfx.GeckoLayerClient;
@@ -197,6 +198,11 @@ class LOKitThread extends Thread {
         mInvalidationHandler = new InvalidationHandler(mContext);
         mTileProvider = TileProviderFactory.create(mContext, mInvalidationHandler, filePath);
 
+        // Set min zoom to the page width so that you cannot zoom below page width
+        // applies to all types of document; in the future spreadsheets may be singled out
+        float minZoom = mLayerClient.getViewportMetrics().getWidth()/mTileProvider.getPageWidth();
+        mLayerClient.setZoomConstraints(new ZoomConstraints(true, 0.0f, minZoom, 0.0f));
+
         if (mTileProvider.isReady()) {
             LOKitShell.showProgressSpinner(mContext);
             refresh();
diff --git a/android/source/src/java/org/libreoffice/LibreOfficeMainActivity.java b/android/source/src/java/org/libreoffice/LibreOfficeMainActivity.java
index 53e956a7de69..3e41a7dda98f 100755
--- a/android/source/src/java/org/libreoffice/LibreOfficeMainActivity.java
+++ b/android/source/src/java/org/libreoffice/LibreOfficeMainActivity.java
@@ -33,7 +33,6 @@ import org.libreoffice.storage.DocumentProviderFactory;
 import org.libreoffice.storage.IFile;
 import org.libreoffice.ui.FileUtilities;
 import org.libreoffice.ui.LibreOfficeUIActivity;
-import org.mozilla.gecko.ZoomConstraints;
 import org.mozilla.gecko.gfx.GeckoLayerClient;
 import org.mozilla.gecko.gfx.LayerView;
 
@@ -191,7 +190,6 @@ public class LibreOfficeMainActivity extends AppCompatActivity {
         loKitThread.start();
 
         mLayerClient = new GeckoLayerClient(this);
-        mLayerClient.setZoomConstraints(new ZoomConstraints(true));
         LayerView layerView = (LayerView) findViewById(R.id.layer_view);
         mLayerClient.setView(layerView);
         layerView.setInputConnectionHandler(new LOKitInputConnectionHandler());
diff --git a/android/source/src/java/org/mozilla/gecko/ZoomConstraints.java b/android/source/src/java/org/mozilla/gecko/ZoomConstraints.java
index eba0dfe54aff..f1672ba3dd76 100644
--- a/android/source/src/java/org/mozilla/gecko/ZoomConstraints.java
+++ b/android/source/src/java/org/mozilla/gecko/ZoomConstraints.java
@@ -12,12 +12,12 @@ public final class ZoomConstraints {
     private final float mMinZoom;
     private final float mMaxZoom;
 
-    public ZoomConstraints(boolean allowZoom) {
+    public ZoomConstraints(boolean allowZoom, float defaultZoom, float minZoom, float maxZoom) {
         mAllowZoom = allowZoom;
         mAllowDoubleTapZoom = allowZoom;
-        mDefaultZoom = 0.0f;
-        mMinZoom = 0.0f;
-        mMaxZoom = 0.0f;
+        mDefaultZoom = defaultZoom;
+        mMinZoom = minZoom;
+        mMaxZoom = maxZoom;
     }
 
     public final boolean getAllowZoom() {
diff --git a/android/source/src/java/org/mozilla/gecko/gfx/GeckoLayerClient.java b/android/source/src/java/org/mozilla/gecko/gfx/GeckoLayerClient.java
index 93ab1dd26d7f..386b1638ebaf 100644
--- a/android/source/src/java/org/mozilla/gecko/gfx/GeckoLayerClient.java
+++ b/android/source/src/java/org/mozilla/gecko/gfx/GeckoLayerClient.java
@@ -62,7 +62,6 @@ public class GeckoLayerClient implements PanZoomTarget {
         mForceRedraw = true;
         DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
         mViewportMetrics = new ImmutableViewportMetrics(displayMetrics);
-        mZoomConstraints = new ZoomConstraints(false);
     }
 
     public void setView(LayerView view) {
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 020b403a9879..7d7474eae0b4 100644
--- a/android/source/src/java/org/mozilla/gecko/gfx/JavaPanZoomController.java
+++ b/android/source/src/java/org/mozilla/gecko/gfx/JavaPanZoomController.java
@@ -845,13 +845,11 @@ class JavaPanZoomController
 
         synchronized (mTarget.getLock()) {
             float newZoomFactor = getMetrics().zoomFactor * spanRatio;
-            float minZoomFactor = 0.0f;
+            float minZoomFactor = 0.0f; // deliberately set to zero to allow big zoom out effect
             float maxZoomFactor = MAX_ZOOM;
 
             ZoomConstraints constraints = mTarget.getZoomConstraints();
 
-            if (constraints.getMinZoom() > 0)
-                minZoomFactor = constraints.getMinZoom();
             if (constraints.getMaxZoom() > 0)
                 maxZoomFactor = constraints.getMaxZoom();
 


More information about the Libreoffice-commits mailing list