diff options
author | Tomaž Vajngerl <tomaz.vajngerl@collabora.co.uk> | 2015-01-29 19:03:07 +0900 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.co.uk> | 2015-02-09 08:12:06 +0100 |
commit | e71b15ccc55b8e4bc4b105a664abfd5eb72da2de (patch) | |
tree | 7887da2fd5162a0a31ab3ee3ce2e946b809e6404 /android/experimental | |
parent | 576973408d88c9bf6100c09cb10b84edcdc88094 (diff) |
tdf#87098 don't adjust zoom/position for spreadsheets
Change-Id: Ieb908980a931b123e2c48fe3ecdc7830b48810ed
Diffstat (limited to 'android/experimental')
4 files changed, 33 insertions, 7 deletions
diff --git a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java index 5cb8f319964f..354404c34203 100644 --- a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java +++ b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java @@ -63,16 +63,27 @@ public class LOKitThread extends Thread implements TileProvider.TileInvalidation mViewportMetrics = mLayerClient.getViewportMetrics(); mLayerClient.setViewportMetrics(mViewportMetrics); - if (mTileProvider.isTextDocument()) { + zoomAndRepositionTheDocument(); + + mLayerClient.forceRedraw(); + } + + private void zoomAndRepositionTheDocument() { + if (mTileProvider.isSpreadsheet()) { + // Don't do anything for spreadsheets - show at 100% + } else if (mTileProvider.isTextDocument()) { + // Always zoom text document to the beginning of the document and centered by width float centerY = mViewportMetrics.getCssViewport().centerY(); - mLayerClient.zoomTo(new RectF (0, centerY, mTileProvider.getPageWidth(), centerY)); - } else if (mViewportMetrics.getViewport().width() < mViewportMetrics.getViewport().height()) { - mLayerClient.zoomTo(mTileProvider.getPageWidth(), 0); + mLayerClient.zoomTo(new RectF(0, centerY, mTileProvider.getPageWidth(), centerY)); } else { - mLayerClient.zoomTo(0, mTileProvider.getPageHeight()); + // Other documents - always show the whole document on the screen, + // regardless of document shape and orientation. + if (mViewportMetrics.getViewport().width() < mViewportMetrics.getViewport().height()) { + mLayerClient.zoomTo(mTileProvider.getPageWidth(), 0); + } else { + mLayerClient.zoomTo(0, mTileProvider.getPageHeight()); + } } - - mLayerClient.forceRedraw(); } /** Invalidate everything + handle the geometry change */ diff --git a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitTileProvider.java b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitTileProvider.java index 553945033274..c5f31b37a03a 100644 --- a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitTileProvider.java +++ b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitTileProvider.java @@ -270,6 +270,11 @@ public class LOKitTileProvider implements TileProvider, Document.MessageCallback return mDocument != null && mDocument.getDocumentType() == Document.DOCTYPE_TEXT; } + @Override + public boolean isSpreadsheet() { + return mDocument != null && mDocument.getDocumentType() == Document.DOCTYPE_SPREADSHEET; + } + /** * Register the tile invalidation callback. */ diff --git a/android/experimental/LOAndroid3/src/java/org/libreoffice/MockTileProvider.java b/android/experimental/LOAndroid3/src/java/org/libreoffice/MockTileProvider.java index 006ae90fb302..34347bb3b31d 100644 --- a/android/experimental/LOAndroid3/src/java/org/libreoffice/MockTileProvider.java +++ b/android/experimental/LOAndroid3/src/java/org/libreoffice/MockTileProvider.java @@ -85,6 +85,11 @@ public class MockTileProvider implements TileProvider { } @Override + public boolean isSpreadsheet() { + return false; + } + + @Override public void registerInvalidationCallback(TileInvalidationCallback tileInvalidationCallback) { } diff --git a/android/experimental/LOAndroid3/src/java/org/libreoffice/TileProvider.java b/android/experimental/LOAndroid3/src/java/org/libreoffice/TileProvider.java index 759ecadac027..c983c621e9bf 100644 --- a/android/experimental/LOAndroid3/src/java/org/libreoffice/TileProvider.java +++ b/android/experimental/LOAndroid3/src/java/org/libreoffice/TileProvider.java @@ -54,6 +54,11 @@ public interface TileProvider { boolean isTextDocument(); /** + * Returns true if the current open document is a spreadsheet. + */ + boolean isSpreadsheet(); + + /** * Register a callback that is invoked when a tile invalidation is * required. * |