diff options
author | Michael Weghorn <m.weghorn@posteo.de> | 2021-05-21 17:47:13 +0200 |
---|---|---|
committer | Michael Weghorn <m.weghorn@posteo.de> | 2021-05-21 21:59:31 +0200 |
commit | 1cfc6c545cd979eff04e38b2998c40e25106faf2 (patch) | |
tree | 35ee19e5c96338dc6fbd07a6a5b01016788290e2 /android/source | |
parent | a3f682f90f85d69270f4d10ee1d661f25257bf21 (diff) |
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.weghorn@posteo.de>
Diffstat (limited to 'android/source')
-rw-r--r-- | android/source/src/java/org/libreoffice/LOKitThread.java | 22 |
1 files changed, 12 insertions, 10 deletions
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); |