android/README.md | 4 - android/source/src/java/org/mozilla/gecko/gfx/GeckoLayerClient.java | 14 +---- android/source/src/java/org/mozilla/gecko/gfx/JavaPanZoomController.java | 6 -- android/source/src/java/org/mozilla/gecko/gfx/LayerView.java | 2 android/source/src/java/org/mozilla/gecko/gfx/PanZoomController.java | 28 ---------- 5 files changed, 10 insertions(+), 44 deletions(-)
New commits: commit c6167305a85ff369bf56c462b2e11a4207bf68c3 Author: Michael Weghorn <[email protected]> AuthorDate: Thu Nov 13 12:28:53 2025 +0100 Commit: Michael Weghorn <[email protected]> CommitDate: Fri Nov 14 11:57:34 2025 +0100 android: Drop JavaPanZoomController.mMainThread Instead call the logic to get the main thread directly in JavaPanZoomController.checkMainThread. Change-Id: I5fe02ba038b0e4ea954012e2a7296f59113e1eb6 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/193960 Tested-by: Jenkins Reviewed-by: Michael Weghorn <[email protected]> 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 3c20228d1280..c9a9aca7907e 100644 --- a/android/source/src/java/org/mozilla/gecko/gfx/JavaPanZoomController.java +++ b/android/source/src/java/org/mozilla/gecko/gfx/JavaPanZoomController.java @@ -74,7 +74,6 @@ class JavaPanZoomController private final Axis mX; private final Axis mY; private final TouchEventHandler mTouchEventHandler; - private final Thread mMainThread; private final LibreOfficeMainActivity mContext; /* The timer that handles flings or bounces. */ @@ -99,7 +98,6 @@ class JavaPanZoomController mY = new AxisY(); mTouchEventHandler = new TouchEventHandler(view.getContext(), this); - mMainThread = mContext.getMainLooper().getThread(); checkMainThread(); setState(PanZoomState.NOTHING); @@ -124,7 +122,7 @@ class JavaPanZoomController // for debugging bug 713011; it can be taken out once that is resolved. private void checkMainThread() { - if (mMainThread != Thread.currentThread()) { + if (mContext.getMainLooper().getThread() != Thread.currentThread()) { // log with full stack trace Log.e(LOGTAG, "Uh-oh, we're running on the wrong thread!", new Exception()); } commit d1c3fe050ab5a50a73b652d52348712f0e475ff8 Author: Michael Weghorn <[email protected]> AuthorDate: Thu Nov 13 12:19:37 2025 +0100 Commit: Michael Weghorn <[email protected]> CommitDate: Fri Nov 14 11:57:24 2025 +0100 android: Drop PanZoomController iface JavaPanZoomController is the only implementation. Use that one directly instead, which also removes the need for some casting in GeckoLayerClient. Change-Id: Id9c4a8ed154b66ac81274eb1648477163eb546a0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/193959 Reviewed-by: Michael Weghorn <[email protected]> Tested-by: Jenkins diff --git a/android/README.md b/android/README.md index 186208c3e118..6d4da9a96395 100644 --- a/android/README.md +++ b/android/README.md @@ -70,13 +70,13 @@ and rendering the layers to the document. - `GeckoLayerClient` (`org.mozilla.gecko.gfx.GeckoLayerClient`) is the middle man of the application, which connects all the bits together. It is the document view layer holder so the any management (including tiled rendering) usually go through this - class. It listens to draw requests and viewport changes from `PanZoomController` + class. It listens to draw requests and viewport changes from `JavaPanZoomController` (see "Touch events"). ### Touch Events, Scrolling and Zooming The main class that handles the touch event, scrolling and zooming is `JavaPanZoomController` -`org.mozilla.gecko.gfx.JavaPanZoomController` (implementation of `PanZoomController` interface). +`org.mozilla.gecko.gfx.JavaPanZoomController`. When the user performs a touch action, the document view needs to change, which means the viewport changes. `JavaPanZoomController` changes the viewport and signals the change through `PanZoomTarget` (`org.mozilla.gecko.gfx.PanZoomTarget`). 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 2c6db0d22773..268874e6e5f1 100644 --- a/android/source/src/java/org/mozilla/gecko/gfx/GeckoLayerClient.java +++ b/android/source/src/java/org/mozilla/gecko/gfx/GeckoLayerClient.java @@ -43,7 +43,7 @@ public class GeckoLayerClient implements PanZoomTarget { private ZoomConstraints mZoomConstraints; - private final PanZoomController mPanZoomController; + private final JavaPanZoomController mPanZoomController; private final LayerView mView; private final DisplayPortCalculator mDisplayPortCalculator; @@ -60,7 +60,7 @@ public class GeckoLayerClient implements PanZoomTarget { mViewportMetrics = new ImmutableViewportMetrics(displayMetrics); mView = view; - mPanZoomController = PanZoomController.Factory.create(mContext, this, mView); + mPanZoomController = new JavaPanZoomController(mContext, this, mView); mView.connect(this); mRootLayer = new DynamicTileLayer(mContext); @@ -114,7 +114,7 @@ public class GeckoLayerClient implements PanZoomTarget { sendResizeEventIfNecessary(forceResizeEvent); } - PanZoomController getPanZoomController() { + JavaPanZoomController getPanZoomController() { return mPanZoomController; } @@ -280,18 +280,14 @@ public class GeckoLayerClient implements PanZoomTarget { } public void zoomTo(RectF rect) { - if (mPanZoomController instanceof JavaPanZoomController) { - ((JavaPanZoomController) mPanZoomController).animatedZoomTo(rect); - } + mPanZoomController.animatedZoomTo(rect); } /** * Move the viewport to the desired point, and change the zoom level. */ public void moveTo(PointF point, Float zoom) { - if (mPanZoomController instanceof JavaPanZoomController) { - ((JavaPanZoomController) mPanZoomController).animatedMove(point, zoom); - } + mPanZoomController.animatedMove(point, zoom); } public void zoomTo(float pageWidth, float pageHeight) { 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 317bf92bf187..3c20228d1280 100644 --- a/android/source/src/java/org/mozilla/gecko/gfx/JavaPanZoomController.java +++ b/android/source/src/java/org/mozilla/gecko/gfx/JavaPanZoomController.java @@ -30,7 +30,7 @@ import java.lang.StrictMath; */ class JavaPanZoomController extends GestureDetector.SimpleOnGestureListener - implements PanZoomController, SimpleScaleGestureDetector.SimpleScaleGestureListener + implements SimpleScaleGestureDetector.SimpleScaleGestureListener { private static final String LOGTAG = "GeckoPanZoomController"; diff --git a/android/source/src/java/org/mozilla/gecko/gfx/LayerView.java b/android/source/src/java/org/mozilla/gecko/gfx/LayerView.java index 4de92ce95e66..7e483a27cd6f 100644 --- a/android/source/src/java/org/mozilla/gecko/gfx/LayerView.java +++ b/android/source/src/java/org/mozilla/gecko/gfx/LayerView.java @@ -39,7 +39,7 @@ public class LayerView extends FrameLayout { private static final String LOGTAG = LayerView.class.getName(); private GeckoLayerClient mLayerClient; - private PanZoomController mPanZoomController; + private JavaPanZoomController mPanZoomController; private final GLController mGLController; private InputConnectionHandler mInputConnectionHandler; private LayerRenderer mRenderer; diff --git a/android/source/src/java/org/mozilla/gecko/gfx/PanZoomController.java b/android/source/src/java/org/mozilla/gecko/gfx/PanZoomController.java deleted file mode 100644 index 27c6b65dc558..000000000000 --- a/android/source/src/java/org/mozilla/gecko/gfx/PanZoomController.java +++ /dev/null @@ -1,28 +0,0 @@ -/* -*- Mode: Java; c-basic-offset: 4; tab-width: 20; indent-tabs-mode: nil; -*- - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -package org.mozilla.gecko.gfx; - -import android.graphics.PointF; -import android.view.MotionEvent; -import android.view.View; -import org.libreoffice.LibreOfficeMainActivity; - -interface PanZoomController { - - class Factory { - static PanZoomController create(LibreOfficeMainActivity context, PanZoomTarget target, View view) { - return new JavaPanZoomController(context, target, view); - } - } - - boolean onTouchEvent(MotionEvent event); - boolean onMotionEvent(MotionEvent event); - - boolean getRedrawHint(); - PointF getVelocityVector(); - - void pageRectUpdated(); -}
