summaryrefslogtreecommitdiff
path: root/android
diff options
context:
space:
mode:
authorMichael Weghorn <m.weghorn@posteo.de>2021-05-21 17:47:13 +0200
committerMichael Weghorn <m.weghorn@posteo.de>2021-05-21 21:59:31 +0200
commit1cfc6c545cd979eff04e38b2998c40e25106faf2 (patch)
tree35ee19e5c96338dc6fbd07a6a5b01016788290e2 /android
parenta3f682f90f85d69270f4d10ee1d661f25257bf21 (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')
-rw-r--r--android/source/src/java/org/libreoffice/LOKitThread.java22
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);