loleaflet/src/geo/LatLngBounds.js         |   15 +++++++++-
 loleaflet/src/layer/tile/CalcTileLayer.js |   26 ++---------------
 loleaflet/src/layer/tile/TileLayer.js     |   44 ++++++++++++++++++++++--------
 3 files changed, 51 insertions(+), 34 deletions(-)

New commits:
commit 732e440018011491ddf34113335f6f0b979e8237
Author:     Dennis Francis <dennis.fran...@collabora.com>
AuthorDate: Tue Jul 7 21:52:27 2020 +0530
Commit:     Dennis Francis <dennis.fran...@collabora.com>
CommitDate: Wed Jul 8 17:06:01 2020 +0200

    make _onUpdateCursor work correctly for split-panes
    
    Change-Id: Ib81a4530a48686fb2e2e31aee9941aab654f0868
    Reviewed-on: https://gerrit.libreoffice.org/c/online/+/98359
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com>
    Tested-by: Jenkins
    Reviewed-by: Dennis Francis <dennis.fran...@collabora.com>

diff --git a/loleaflet/src/geo/LatLngBounds.js 
b/loleaflet/src/geo/LatLngBounds.js
index 80e059750..1241da361 100644
--- a/loleaflet/src/geo/LatLngBounds.js
+++ b/loleaflet/src/geo/LatLngBounds.js
@@ -189,7 +189,20 @@ L.LatLngBounds.prototype = {
 
        isValid: function () {
                return !!(this._southWest && this._northEast);
-       }
+       },
+
+       isInAny: function (latLngBoundsArray) {
+               console.assert(Array.isArray(latLngBoundsArray), 'invalid 
argument type');
+
+               for (var i = 0; i < latLngBoundsArray.length; ++i) {
+                       if (latLngBoundsArray[i].contains(this)) {
+                               return true;
+                       }
+               }
+
+               return false;
+       },
+
 };
 
 L.LatLngBounds.createDefault = function() {
diff --git a/loleaflet/src/layer/tile/CalcTileLayer.js 
b/loleaflet/src/layer/tile/CalcTileLayer.js
index 70fbe3dd0..1dfd7811c 100644
--- a/loleaflet/src/layer/tile/CalcTileLayer.js
+++ b/loleaflet/src/layer/tile/CalcTileLayer.js
@@ -931,7 +931,7 @@ L.CalcTileLayer = L.TileLayer.extend({
                return this._twipsToPixels(this._cellCursorTwips.getTopLeft());
        },
 
-       _calculateScrollForNewCursor: function () {
+       _calculateScrollForNewCellCursor: function () {
 
                var scroll = new L.LatLng(0, 0);
 
@@ -940,28 +940,10 @@ L.CalcTileLayer = L.TileLayer.extend({
                }
 
                var map = this._map;
-               var paneRects = this._splitPanesContext ?
-                       this._splitPanesContext.getPxBoundList() : undefined;
-
-               console.assert(paneRects === undefined || paneRects.length, 
'number of panes cannot be zero!');
-
-               var paneRectsInLatLng = paneRects ? paneRects.map(function 
(pxBound) {
-                       return new L.LatLngBounds(
-                               map.unproject(pxBound.getTopLeft()),
-                               map.unproject(pxBound.getBottomRight())
-                       );
-               }) : [ map.getBounds() ];
-
-               var scrollNeeded = true;
-               for (var i = 0; i < paneRectsInLatLng.length; ++i) {
-                       if (paneRectsInLatLng[i].contains(this._cellCursor)) {
-                               scrollNeeded = false;
-                               break;
-                       }
-               }
+               var paneRectsInLatLng = this.getPaneLatLngRectangles();
 
-               if (!scrollNeeded) {
-                       return scroll; // zero scroll.
+               if (this._cellCursor.isInAny(paneRectsInLatLng)) {
+                       return scroll; // no scroll needed.
                }
 
                var freePaneBounds = paneRectsInLatLng[paneRectsInLatLng.length 
- 1];
diff --git a/loleaflet/src/layer/tile/TileLayer.js 
b/loleaflet/src/layer/tile/TileLayer.js
index e5f73a10c..438476c26 100644
--- a/loleaflet/src/layer/tile/TileLayer.js
+++ b/loleaflet/src/layer/tile/TileLayer.js
@@ -2250,18 +2250,22 @@ L.TileLayer = L.GridLayer.extend({
 
                if (!zoom
                && scroll !== false
-               && !this._map.getBounds().contains(this._visibleCursor)
                && this._map._isCursorVisible
                && (!this._map._clip || this._map._clip._selectionType !== 
'complex')) {
 
-                       var center = this._map.project(cursorPos);
-                       center = 
center.subtract(this._map.getSize().divideBy(2));
-                       center.x = Math.round(center.x < 0 ? 0 : center.x);
-                       center.y = Math.round(center.y < 0 ? 0 : center.y);
-                       if (!(this._selectionHandles.start && 
this._selectionHandles.start.isDragged) &&
-                               !(this._selectionHandles.end && 
this._selectionHandles.end.isDragged) &&
-                               !(docLayer._followEditor || 
docLayer._followUser)) {
-                               this._map.fire('scrollto', {x: center.x, y: 
center.y, calledFromInvalidateCursorMsg: scroll !== undefined});
+                       var paneRectsInLatLng = this.getPaneLatLngRectangles();
+
+                       if (!this._visibleCursor.isInAny(paneRectsInLatLng)) {
+                               var center = this._map.project(cursorPos);
+                               center = 
center.subtract(this._map.getSize().divideBy(2));
+                               center.x = Math.round(center.x < 0 ? 0 : 
center.x);
+                               center.y = Math.round(center.y < 0 ? 0 : 
center.y);
+
+                               if (!(this._selectionHandles.start && 
this._selectionHandles.start.isDragged) &&
+                                       !(this._selectionHandles.end && 
this._selectionHandles.end.isDragged) &&
+                                       !(docLayer._followEditor || 
docLayer._followUser)) {
+                                       this._map.fire('scrollto', {x: 
center.x, y: center.y, calledFromInvalidateCursorMsg: scroll !== undefined});
+                               }
                        }
                }
 
@@ -2963,8 +2967,8 @@ L.TileLayer = L.GridLayer.extend({
                        }
                        var mapBounds = this._map.getBounds();
                        if (!this._cellCursorXY.equals(this._prevCellCursorXY)) 
{
-                               var scroll = 
this._calculateScrollForNewCursor();
-                               console.assert(scroll instanceof L.LatLng, 
'_calculateScrollForNewCursor returned wrong type');
+                               var scroll = 
this._calculateScrollForNewCellCursor();
+                               console.assert(scroll instanceof L.LatLng, 
'_calculateScrollForNewCellCursor returned wrong type');
                                if (scroll.lng !== 0 || scroll.lat !== 0) {
                                        var newCenter = mapBounds.getCenter();
                                        newCenter.lng += scroll.lng;
@@ -3422,6 +3426,24 @@ L.TileLayer = L.GridLayer.extend({
                return new L.Point(0, 0);
        },
 
+       getPaneLatLngRectangles: function () {
+               var map = this._map;
+
+               if (!this._splitPanesContext) {
+                       return [ map.getBounds() ];
+               }
+
+               var paneRects = this._splitPanesContext.getPxBoundList();
+               console.assert(paneRects.length, 'number of panes cannot be 
zero!');
+
+               return paneRects.map(function (pxBound) {
+                       return new L.LatLngBounds(
+                               map.unproject(pxBound.getTopLeft()),
+                               map.unproject(pxBound.getBottomRight())
+                       );
+               });
+       },
+
        _debugGetTimeArray: function() {
                return {count: 0, ms: 0, best: Number.MAX_SAFE_INTEGER, worst: 
0, date: 0};
        },
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to