From 6f5eb643ead93c441566507f4dc4eac2d85e701b Mon Sep 17 00:00:00 2001 From: Tomaž Vajngerl Date: Mon, 22 Dec 2014 14:35:34 +0900 Subject: fdo#87098 invalidate zoom change by triggering animatedZoomTo Change-Id: Ie5734d8999a214a1df544579a7bfb32cc9f035eb --- .../LOAndroid3/src/java/org/libreoffice/LOKitThread.java | 11 ++++++++++- .../src/java/org/mozilla/gecko/gfx/GeckoLayerClient.java | 6 ++++++ .../src/java/org/mozilla/gecko/gfx/JavaPanZoomController.java | 2 +- 3 files changed, 17 insertions(+), 2 deletions(-) (limited to 'android') 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(); -- cgit