android/source/src/java/org/libreoffice/LOKitThread.java | 22 ++++++++------- 1 file changed, 12 insertions(+), 10 deletions(-)
New commits: commit 1cfc6c545cd979eff04e38b2998c40e25106faf2 Author: Michael Weghorn <m.wegh...@posteo.de> AuthorDate: Fri May 21 17:47:13 2021 +0200 Commit: Michael Weghorn <m.wegh...@posteo.de> CommitDate: Fri May 21 21:59:31 2021 +0200 android: Don't reset zoom and position on refresh event Don't call 'zoomAndRepositionTheDocument' for a REFRESH event. The only two places sending such an event are in 'LibreOfficeMainActivity#onStart' and in 'FormattingControler#sendInsertGraphic'. I don't see any need to reset the zoom and position in any of those two cases. Doing so had the effect that any manual zoom changes would be lost when e.g. switching between the LibreOffice Viewer app and another one, after a "Save As" or when inserting a picture. In my opinion, it's desirable to keep the view the user had before doing any of those actions and just rendering the document anew. To do so, add an extra bool parameter 'resetZoomAndPosition' to the relevant methods in 'LOKitThread' that says whether a reset should take place. Change-Id: I8ba6a7cd8d984ad99654e188e00144e1edf407ed Reviewed-on: https://gerrit.libreoffice.org/c/core/+/115950 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 fb076389f0f4..547cb4acc6d2 100644 --- a/android/source/src/java/org/libreoffice/LOKitThread.java +++ b/android/source/src/java/org/libreoffice/LOKitThread.java @@ -111,7 +111,7 @@ class LOKitThread extends Thread { /** * Handle the geometry change + draw. */ - private void redraw() { + private void redraw(boolean resetZoomAndPosition) { if (mLayerClient == null || mTileProvider == null) { // called too early... return; @@ -121,7 +121,9 @@ class LOKitThread extends Thread { mViewportMetrics = mLayerClient.getViewportMetrics(); mLayerClient.setViewportMetrics(mViewportMetrics); - zoomAndRepositionTheDocument(); + if (resetZoomAndPosition) { + zoomAndRepositionTheDocument(); + } mLayerClient.forceRedraw(); mLayerClient.forceRender(); @@ -151,9 +153,9 @@ class LOKitThread extends Thread { /** * Invalidate everything + handle the geometry change */ - private void refresh() { + private void refresh(boolean resetZoomAndPosition) { mLayerClient.clearAndResetlayers(); - redraw(); + redraw(resetZoomAndPosition); updatePartPageRectangles(); if (mTileProvider != null && mTileProvider.isSpreadsheet()) { updateCalcHeaders(); @@ -176,7 +178,7 @@ class LOKitThread extends Thread { private void updatePageSize(int pageWidth, int pageHeight){ mTileProvider.setDocumentSize(pageWidth, pageHeight); - redraw(); + redraw(true); } private void updateZoomConstraints() { @@ -195,7 +197,7 @@ class LOKitThread extends Thread { mTileProvider.changePart(partIndex); mViewportMetrics = mLayerClient.getViewportMetrics(); // mLayerClient.setViewportMetrics(mViewportMetrics.scaleTo(0.9f, new PointF())); - refresh(); + refresh(true); LOKitShell.hideProgressSpinner(mContext); } @@ -217,7 +219,7 @@ class LOKitThread extends Thread { public void run() { // synchronize to avoid deletion while loading synchronized (LOKitThread.this) { - refresh(); + refresh(true); } } }); @@ -241,7 +243,7 @@ class LOKitThread extends Thread { if (mTileProvider.isReady()) { LOKitShell.showProgressSpinner(mContext); updateZoomConstraints(); - refresh(); + refresh(true); LOKitShell.hideProgressSpinner(mContext); mTileProvider.saveDocumentAs(filePath, true); @@ -293,7 +295,7 @@ class LOKitThread extends Thread { closeDocument(); break; case LOEvent.SIZE_CHANGED: - redraw(); + redraw(true); break; case LOEvent.CHANGE_PART: changePart(event.mPartIndex); @@ -347,7 +349,7 @@ class LOKitThread extends Thread { mTileProvider.postUnoCommand(event.mString, event.mValue, event.mNotify); break; case LOEvent.REFRESH: - refresh(); + refresh(false); break; case LOEvent.PAGE_SIZE_CHANGED: updatePageSize(event.mPageWidth, event.mPageHeight); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits