[Libreoffice-commits] online.git: loleaflet/src
Michael Meeks (via logerrit)
logerrit at kemper.freedesktop.org
Thu Feb 13 09:10:21 UTC 2020
loleaflet/src/layer/tile/TileLayer.js | 10 ++++++++++
1 file changed, 10 insertions(+)
New commits:
commit 3d029cb6d0011f7cdf158a9d14ff704b3321695b
Author: Michael Meeks <michael.meeks at collabora.com>
AuthorDate: Thu Feb 13 02:04:50 2020 +0000
Commit: Jan Holesovsky <kendy at collabora.com>
CommitDate: Thu Feb 13 10:10:02 2020 +0100
Instead of zooming each time we resize, instead keep zoom and pan.
This helps us smoothly follow the cursor, and to adapt to less
space available when eg. the wizard or the keyboard pop up.
Ensure we do the right zoom-to-fit on the first call, interestingly
if we do not do that - we get just a single tile at the top left (que?).
Change-Id: Ib26f9b474caa631028e18e790dd50c058cbaef3b
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/88577
Tested-by: Jan Holesovsky <kendy at collabora.com>
Reviewed-by: Jan Holesovsky <kendy at collabora.com>
diff --git a/loleaflet/src/layer/tile/TileLayer.js b/loleaflet/src/layer/tile/TileLayer.js
index 7be34c242..298ce5a41 100644
--- a/loleaflet/src/layer/tile/TileLayer.js
+++ b/loleaflet/src/layer/tile/TileLayer.js
@@ -306,6 +306,7 @@ L.TileLayer = L.GridLayer.extend({
map.on('requestloksession', this._onRequestLOKSession, this);
map.on('error', this._mapOnError, this);
if (map.options.autoFitWidth !== false) {
+ // always true since autoFitWidth is never set
map.on('resize', this._fitWidthZoom, this);
}
// Retrieve the initial cell cursor position (as LOK only sends us an
@@ -3106,10 +3107,12 @@ L.TileLayer = L.GridLayer.extend({
this._map._socket.sendMessage('requestloksession');
},
+ // This is really just called on zoomend
_fitWidthZoom: function (e, maxZoom) {
if (isNaN(this._docWidthTwips)) { return; }
var oldSize = e ? e.oldSize : this._map.getSize();
var newSize = e ? e.newSize : this._map.getSize();
+
if (this._docType !== 'presentation' && newSize.x - oldSize.x === 0) { return; }
var widthTwips = newSize.x * this._map.options.tileWidthTwips / this._tileSize;
@@ -3123,6 +3126,13 @@ L.TileLayer = L.GridLayer.extend({
zoom = Math.min(maxZoom, Math.max(1, zoom));
if (this._docWidthTwips * this._map.getZoomScale(zoom, 10) < widthTwips) {
+ // Not clear why we wanted to zoom in the past.
+ // This resets the view & scroll area and does a 'panTo'
+ // to keep the cursor in view.
+ // But of course, zoom to fit the first time.
+ if (this._firstFitDone)
+ zoom = this._map._zoom;
+ this._firstFitDone = true;
this._map.setZoom(zoom, {animate: false});
}
}
More information about the Libreoffice-commits
mailing list