[Libreoffice-commits] online.git: loleaflet/src
Dennis Francis (via logerrit)
logerrit at kemper.freedesktop.org
Fri Jul 10 14:53:17 UTC 2020
loleaflet/src/layer/marker/Marker.js | 12 +++++----
loleaflet/src/layer/tile/CalcTileLayer.js | 12 ++++++++-
loleaflet/src/layer/tile/CanvasTileLayer.js | 28 +++++++++++++----------
loleaflet/src/layer/vector/Renderer.js | 4 +--
loleaflet/src/layer/vector/SplitPanesRenderer.js | 4 ---
loleaflet/src/layer/vector/SplitPanesSVG.js | 2 -
loleaflet/src/layer/vector/SplitterLine.js | 15 ++++++------
loleaflet/src/map/Map.js | 21 +++++++----------
8 files changed, 54 insertions(+), 44 deletions(-)
New commits:
commit fa043504b92b8cb47403336f56f58f720502aec4
Author: Dennis Francis <dennis.francis at collabora.com>
AuthorDate: Thu Jul 9 22:36:24 2020 +0530
Commit: Dennis Francis <dennis.francis at collabora.com>
CommitDate: Fri Jul 10 16:52:58 2020 +0200
defer splitPanesContext creation till we get the part number...
and this context object should be cached as a member only by the document layer.
All others must invoke getSplitPanesContext() on the map or the document layer
everytime it is needed. Otherwise it is a lot of effort to keep the
caches up-to-date on a sheet-switch etc.
Change-Id: I262b0f6a10060426d89460defc0d3f0a510b880e
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/98496
Tested-by: Jenkins
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice at gmail.com>
Reviewed-by: Dennis Francis <dennis.francis at collabora.com>
diff --git a/loleaflet/src/layer/marker/Marker.js b/loleaflet/src/layer/marker/Marker.js
index d9e1db258..2fe48b10b 100644
--- a/loleaflet/src/layer/marker/Marker.js
+++ b/loleaflet/src/layer/marker/Marker.js
@@ -40,7 +40,6 @@ L.Marker = L.Layer.extend({
},
onAdd: function (map) {
- this._splitPanesContext = map.getSplitPanesContext();
this._zoomAnimated = this._zoomAnimated && map.options.markerZoomAnimation;
this._initIcon();
@@ -65,12 +64,13 @@ L.Marker = L.Layer.extend({
getEvents: function () {
var events = {viewreset: this.update};
- if (this._splitPanesContext) {
+ var splitPanesPossible = this._map._docLayer.hasSplitPanesSupport();
+ if (splitPanesPossible) {
events.moveend = this.update;
events.splitposchanged = this.update;
}
- if (this._zoomAnimated && !this._splitPanesContext) {
+ if (this._zoomAnimated && !splitPanesPossible) {
events.zoomanim = this._animateZoom;
}
@@ -115,12 +115,14 @@ L.Marker = L.Layer.extend({
return;
}
- if (!this._splitPanesContext) {
+ var splitPanesContext = this._map.getSplitPanesContext();
+
+ if (!splitPanesContext) {
this._setPos(this._map.latLngToLayerPoint(this._latlng).round());
return;
}
- var splitPos = this._splitPanesContext.getSplitPos();
+ var splitPos = splitPanesContext.getSplitPos();
var docPos = this._map.project(this._latlng);
var pixelOrigin = this._map.getPixelOrigin();
var mapPanePos = this._map._getMapPanePos();
diff --git a/loleaflet/src/layer/tile/CalcTileLayer.js b/loleaflet/src/layer/tile/CalcTileLayer.js
index 2f1a6ac8a..dfe2fd9e2 100644
--- a/loleaflet/src/layer/tile/CalcTileLayer.js
+++ b/loleaflet/src/layer/tile/CalcTileLayer.js
@@ -69,7 +69,6 @@ L.CalcTileLayer = (L.Browser.mobile ? L.TileLayer : L.CanvasTileLayer).extend({
},
onAdd: function (map) {
- this._switchSplitPanesContext();
map.addControl(L.control.tabs());
map.addControl(L.control.columnHeader());
map.addControl(L.control.rowHeader());
@@ -539,6 +538,7 @@ L.CalcTileLayer = (L.Browser.mobile ? L.TileLayer : L.CanvasTileLayer).extend({
_onStatusMsg: function (textMsg) {
var command = this._map._socket.parseServerCmd(textMsg);
if (command.width && command.height && this._documentInfo !== textMsg) {
+ var firstSelectedPart = (typeof this._selectedPart !== 'number');
this._docWidthTwips = command.width;
this._docHeightTwips = command.height;
this._docType = command.type;
@@ -575,6 +575,9 @@ L.CalcTileLayer = (L.Browser.mobile ? L.TileLayer : L.CanvasTileLayer).extend({
});
this._resetPreFetching(true);
this._update();
+ if (firstSelectedPart) {
+ this._switchSplitPanesContext();
+ }
}
},
@@ -773,13 +776,18 @@ L.CalcTileLayer = (L.Browser.mobile ? L.TileLayer : L.CanvasTileLayer).extend({
this._splitPaneCache = {};
}
+ console.assert(typeof this._selectedPart === 'number', 'invalid selectedPart');
+
var spContext = this._splitPaneCache[this._selectedPart];
if (!spContext) {
spContext = new L.SplitPanesContext(this);
+ this._splitPaneCache[this._selectedPart] = spContext;
}
this._splitPanesContext = spContext;
- this._map._splitPanesContext = spContext;
+ if (this.sheetGeometry) {
+ this._updateSplitPos();
+ }
},
_onCommandValuesMsg: function (textMsg) {
diff --git a/loleaflet/src/layer/tile/CanvasTileLayer.js b/loleaflet/src/layer/tile/CanvasTileLayer.js
index e086a08ad..4c7bd0394 100644
--- a/loleaflet/src/layer/tile/CanvasTileLayer.js
+++ b/loleaflet/src/layer/tile/CanvasTileLayer.js
@@ -43,7 +43,6 @@ L.CanvasTilePainter = L.Class.extend({
initialize: function (layer, dpiScale, enableImageSmoothing) {
this._layer = layer;
this._canvas = this._layer._canvas;
- this._splitPanesContext = this._layer.getSplitPanesContext();
if (dpiScale === 1 || dpiScale === 2) {
enableImageSmoothing = (enableImageSmoothing === true);
@@ -60,8 +59,9 @@ L.CanvasTilePainter = L.Class.extend({
this._topLeft = undefined;
this._lastZoom = undefined;
this._lastPart = undefined;
- this._splitPos = this._splitPanesContext ?
- this._splitPanesContext.getSplitPos() : new L.Point(0, 0);
+ var splitPanesContext = this._layer.getSplitPanesContext();
+ this._splitPos = splitPanesContext ?
+ splitPanesContext.getSplitPos() : new L.Point(0, 0);
this._tileSizeCSSPx = undefined;
this._updatesRunning = false;
@@ -139,9 +139,10 @@ L.CanvasTilePainter = L.Class.extend({
var tileBounds = new L.Bounds(tileTopLeft, tileTopLeft.add(tileSize));
viewBounds = viewBounds || this._map.getPixelBounds();
+ var splitPanesContext = this._layer.getSplitPanesContext();
paneBoundsList = paneBoundsList || (
- this._splitPanesContext ?
- this._splitPanesContext.getPxBoundList(viewBounds) :
+ splitPanesContext ?
+ splitPanesContext.getPxBoundList(viewBounds) :
[viewBounds]
);
@@ -182,10 +183,11 @@ L.CanvasTilePainter = L.Class.extend({
},
_drawSplits: function () {
- if (!this._splitPanesContext) {
+ var splitPanesContext = this._layer.getSplitPanesContext();
+ if (!splitPanesContext) {
return;
}
- var splitPos = this._splitPanesContext.getSplitPos();
+ var splitPos = splitPanesContext.getSplitPos();
this._canvasCtx.save();
this._canvasCtx.scale(this._dpiScale, this._dpiScale);
this._canvasCtx.strokeStyle = 'red';
@@ -201,13 +203,14 @@ L.CanvasTilePainter = L.Class.extend({
update: function () {
+ var splitPanesContext = this._layer.getSplitPanesContext();
var zoom = Math.round(this._map.getZoom());
var pixelBounds = this._map.getPixelBounds();
var newSize = pixelBounds.getSize();
var newTopLeft = pixelBounds.getTopLeft();
var part = this._layer._selectedPart;
- var newSplitPos = this._splitPanesContext ?
- this._splitPanesContext.getSplitPos(): this._splitPos;
+ var newSplitPos = splitPanesContext ?
+ splitPanesContext.getSplitPos(): this._splitPos;
var zoomChanged = (zoom !== this._lastZoom);
var partChanged = (part !== this._lastPart);
@@ -259,7 +262,7 @@ L.CanvasTilePainter = L.Class.extend({
_shiftAndPaint: function (newTopLeft) {
- console.assert(!this._splitPanesContext, '_shiftAndPaint is broken for split-panes.');
+ console.assert(!this._layer.getSplitPanesContext(), '_shiftAndPaint is broken for split-panes.');
var offset = new L.Point(this._width - 1, this._height - 1);
var dx = newTopLeft.x - this._topLeft.x;
@@ -359,9 +362,10 @@ L.CanvasTilePainter = L.Class.extend({
var viewSize = new L.Point(this._width, this._height);
var viewBounds = new L.Bounds(this._topLeft, this._topLeft.add(viewSize));
+ var splitPanesContext = this._layer.getSplitPanesContext();
// Calculate all this here intead of doing it per tile.
- var paneBoundsList = this._splitPanesContext ?
- this._splitPanesContext.getPxBoundList(viewBounds) : [viewBounds];
+ var paneBoundsList = splitPanesContext ?
+ splitPanesContext.getPxBoundList(viewBounds) : [viewBounds];
var tileRanges = paneBoundsList.map(this._layer._pxBoundsToTileRange, this._layer);
var tileSize = this._tileSizeCSSPx || this._layer._getTileSize();
diff --git a/loleaflet/src/layer/vector/Renderer.js b/loleaflet/src/layer/vector/Renderer.js
index b2507db6d..85ab7bccb 100644
--- a/loleaflet/src/layer/vector/Renderer.js
+++ b/loleaflet/src/layer/vector/Renderer.js
@@ -108,7 +108,7 @@ L.Map.include({
var renderer = layer.options.renderer || this._getPaneRenderer(layer.options.pane) || this.options.renderer || this._renderer;
if (!renderer) {
- if (this._splitPanesContext) {
+ if (this.getSplitPanesContext()) {
renderer = this._renderer = (L.SVG && L.SplitPanesSVG && L.splitPanesSVG()) ||
(L.Canvas && L.SplitPanesCanvas && L.splitPanesCanvas());
}
@@ -132,7 +132,7 @@ L.Map.include({
var renderer = this._paneRenderers[name];
if (renderer === undefined) {
- if (this._splitPanesContext) {
+ if (this.getSplitPanesContext()) {
renderer = (L.SVG && L.SplitPanesSVG && L.splitPanesSVG({pane: name})) ||
(L.Canvas && L.SplitPanesCanvas && L.splitPanesCanvas({pane: name}));
}
diff --git a/loleaflet/src/layer/vector/SplitPanesRenderer.js b/loleaflet/src/layer/vector/SplitPanesRenderer.js
index 4f7f06073..4ef1f72c1 100644
--- a/loleaflet/src/layer/vector/SplitPanesRenderer.js
+++ b/loleaflet/src/layer/vector/SplitPanesRenderer.js
@@ -18,9 +18,7 @@ L.SplitPanesRenderer = L.Layer.extend({
},
onAdd: function () {
-
- this._splitPanesContext = this._map.getSplitPanesContext();
- console.assert(this._splitPanesContext, 'no split-panes context object!');
+ console.assert(this._map.getSplitPanesContext(), 'no split-panes context object!');
if (!this._container) {
this._initContainer(); // defined by renderer implementations
diff --git a/loleaflet/src/layer/vector/SplitPanesSVG.js b/loleaflet/src/layer/vector/SplitPanesSVG.js
index c0f8974ce..4ad5de6fd 100644
--- a/loleaflet/src/layer/vector/SplitPanesSVG.js
+++ b/loleaflet/src/layer/vector/SplitPanesSVG.js
@@ -78,7 +78,7 @@ L.SplitPanesSVG = L.SplitPanesRenderer.extend({
var renderer = this._childRenderers[rendererId];
console.assert(renderer && L.stamp(renderer) === L.stamp(childRenderer), 'Child renderer does not belong to parent!');
- var splitPos = this._splitPanesContext.getSplitPos();
+ var splitPos = this._map.getSplitPanesContext().getSplitPos();
var size = this._map.getSize();
var pixelOrigin = this._map.getPixelOrigin();
// Container coordinates.
diff --git a/loleaflet/src/layer/vector/SplitterLine.js b/loleaflet/src/layer/vector/SplitterLine.js
index a769a58e0..344b91625 100644
--- a/loleaflet/src/layer/vector/SplitterLine.js
+++ b/loleaflet/src/layer/vector/SplitterLine.js
@@ -29,12 +29,12 @@ L.SplitterLine = L.Rectangle.extend({
_calculateLatLngBounds: function (map) {
map = map || this._map;
- this._splitPanesContext = this._splitPanesContext || map.getSplitPanesContext();
- console.assert(this._splitPanesContext, 'no _splitPanesContext!');
+ var splitPanesContext = map.getSplitPanesContext();
+ console.assert(splitPanesContext, 'no splitPanesContext!');
var size = map._docLayer.getMaxDocSize();
var isHoriz = this.options.isHoriz;
- var splitPos = this._splitPanesContext.getSplitPos();
+ var splitPos = splitPanesContext.getSplitPos();
this._lastPos = isHoriz ? splitPos.x : splitPos.y;
@@ -134,17 +134,18 @@ L.SplitterLine = L.Rectangle.extend({
this._dragStarted = false;
if (this._curPos !== undefined) {
+ var splitPanesContext = this._map.getSplitPanesContext();
if (this.options.isHoriz) {
- this._splitPanesContext.setHorizSplitPos(this._curPos);
+ splitPanesContext.setHorizSplitPos(this._curPos);
}
else {
- this._splitPanesContext.setVertSplitPos(this._curPos);
+ splitPanesContext.setVertSplitPos(this._curPos);
}
- var newPoint = this._splitPanesContext.getSplitPos();
+ var newPoint = splitPanesContext.getSplitPos();
var newPos = this.options.isHoriz ? newPoint.x : newPoint.y;
if (newPos == this._lastPos) {
- this._splitPanesContext.updateSplitters();
+ splitPanesContext.updateSplitters();
}
}
diff --git a/loleaflet/src/map/Map.js b/loleaflet/src/map/Map.js
index 97163f1d7..2d4dd2b0e 100644
--- a/loleaflet/src/map/Map.js
+++ b/loleaflet/src/map/Map.js
@@ -914,10 +914,11 @@ L.Map = L.Evented.extend({
},
containerPointToLayerPoint: function (point) { // (Point)
- if (!this._splitPanesContext) {
+ var splitPanesContext = this.getSplitPanesContext();
+ if (!splitPanesContext) {
return this.containerPointToLayerPointIgnoreSplits(point);
}
- var splitPos = this._splitPanesContext.getSplitPos();
+ var splitPos = splitPanesContext.getSplitPos();
var pixelOrigin = this.getPixelOrigin();
var mapPanePos = this._getMapPanePos();
var result = L.point(point);
@@ -943,12 +944,12 @@ L.Map = L.Evented.extend({
},
layerPointToContainerPoint: function (point) { // (Point)
-
- if (!this._splitPanesContext) {
+ var splitPanesContext = this.getSplitPanesContext();
+ if (!splitPanesContext) {
return this.layerPointToContainerPointIgnoreSplits(point);
}
- var splitPos = this._splitPanesContext.getSplitPos();
+ var splitPos = splitPanesContext.getSplitPos();
var pixelOrigin = this.getPixelOrigin();
var mapPanePos = this._getMapPanePos();
var result = L.point(point)._add(pixelOrigin);
@@ -1824,16 +1825,12 @@ L.Map = L.Evented.extend({
},
getSplitPanesContext: function () {
- if (this._splitPanesContext) {
- return this._splitPanesContext;
- }
-
var docLayer = this._docLayer;
- if (docLayer && typeof docLayer.getSplitPanesContext === 'function') {
- this._splitPanesContext = docLayer.getSplitPanesContext();
+ if (docLayer) {
+ return docLayer.getSplitPanesContext();
}
- return this._splitPanesContext;
+ return undefined;
}
});
More information about the Libreoffice-commits
mailing list