summaryrefslogtreecommitdiff
path: root/android
diff options
context:
space:
mode:
authorTomaž Vajngerl <tomaz.vajngerl@collabora.co.uk>2014-12-22 14:35:34 +0900
committerTomaž Vajngerl <tomaz.vajngerl@collabora.co.uk>2014-12-22 17:09:26 +0900
commit6f5eb643ead93c441566507f4dc4eac2d85e701b (patch)
treee1002fc2ab406576a331608b1609fe5dee1e0748 /android
parent319ba046b3a1266b20661116d742779417d38cbf (diff)
fdo#87098 invalidate zoom change by triggering animatedZoomTo
Change-Id: Ie5734d8999a214a1df544579a7bfb32cc9f035eb
Diffstat (limited to 'android')
-rw-r--r--android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java11
-rw-r--r--android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/GeckoLayerClient.java6
-rw-r--r--android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/JavaPanZoomController.java2
3 files changed, 17 insertions, 2 deletions
diff --git a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java
index 8bf82392e19e..2b837383f4d9 100644
--- a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java
+++ b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java
@@ -1,9 +1,14 @@
package org.libreoffice;
+import android.graphics.PointF;
+import android.graphics.RectF;
+import android.util.Log;
+
import org.mozilla.gecko.gfx.CairoImage;
import org.mozilla.gecko.gfx.ComposedTileLayer;
import org.mozilla.gecko.gfx.GeckoLayerClient;
import org.mozilla.gecko.gfx.ImmutableViewportMetrics;
+import org.mozilla.gecko.gfx.JavaPanZoomController;
import org.mozilla.gecko.gfx.SubTile;
import java.util.concurrent.PriorityBlockingQueue;
@@ -40,7 +45,8 @@ public class LOKitThread extends Thread {
mLayerClient.setPageRect(0, 0, mTileProvider.getPageWidth(), mTileProvider.getPageHeight());
mViewportMetrics = mLayerClient.getViewportMetrics();
- mLayerClient.setViewportMetrics(mViewportMetrics.setZoomFactor(mViewportMetrics.getWidth() / mViewportMetrics.getPageWidth()));
+ mLayerClient.setViewportMetrics(mViewportMetrics);
+ mLayerClient.zoomToPageWidth(mTileProvider.getPageWidth());
mLayerClient.forceRedraw();
}
@@ -53,6 +59,8 @@ public class LOKitThread extends Thread {
private void changePart(int partIndex) {
LOKitShell.showProgressSpinner();
mTileProvider.changePart(partIndex);
+ mViewportMetrics = mLayerClient.getViewportMetrics();
+ mLayerClient.setViewportMetrics(mViewportMetrics.scaleTo(0.9f, new PointF()));
refresh();
LOKitShell.hideProgressSpinner();
}
@@ -99,6 +107,7 @@ public class LOKitThread extends Thread {
closeDocument();
break;
case LOEvent.SIZE_CHANGED:
+ Log.i(LOGTAG, "Size change event!");
redraw();
break;
case LOEvent.CHANGE_PART:
diff --git a/android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/GeckoLayerClient.java b/android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/GeckoLayerClient.java
index c3535e5044fa..934d19a7aa71 100644
--- a/android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/GeckoLayerClient.java
+++ b/android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/GeckoLayerClient.java
@@ -460,6 +460,12 @@ public class GeckoLayerClient implements PanZoomTarget, LayerView.Listener {
return mContext;
}
+ public void zoomToPageWidth(int pageWidth) {
+ if (mPanZoomController instanceof JavaPanZoomController) {
+ ((JavaPanZoomController) mPanZoomController).animatedZoomTo(new RectF(0, 0, pageWidth, 0));
+ }
+ }
+
private class AdjustRunnable implements Runnable {
public void run() {
mPendingViewportAdjust = false;
diff --git a/android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/JavaPanZoomController.java b/android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/JavaPanZoomController.java
index af4713675cd5..afab17d60808 100644
--- a/android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/JavaPanZoomController.java
+++ b/android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/JavaPanZoomController.java
@@ -915,7 +915,7 @@ public class JavaPanZoomController
* While we usually use device pixels, @zoomToRect must be specified in CSS
* pixels.
*/
- private boolean animatedZoomTo(RectF zoomToRect) {
+ public boolean animatedZoomTo(RectF zoomToRect) {
final float startZoom = getMetrics().zoomFactor;
RectF viewport = getMetrics().getViewport();