loleaflet/src/control/Control.ColumnHeader.js |   13 ++++---------
 loleaflet/src/control/Control.RowHeader.js    |   13 ++++---------
 loleaflet/src/layer/vector/Polyline.js        |   14 +++++++++++---
 loleaflet/src/layer/vector/SplitPanesSVG.js   |    4 +++-
 4 files changed, 22 insertions(+), 22 deletions(-)

New commits:
commit 6981b71a89fb2adb6d464b9c17023df75e49ec9f
Author:     Dennis Francis <dennis.fran...@collabora.com>
AuthorDate: Thu Jul 9 23:13:35 2020 +0530
Commit:     Dennis Francis <dennis.fran...@collabora.com>
CommitDate: Fri Jul 10 16:57:11 2020 +0200

    split-panes: use document coordinates for paths in "fixed" svg container
    
    and let the grid-resize lines be rendered in this fixed svg container
    which makes their position-calculations a lot simpler.
    
    Change-Id: I4b5834c6b00b1ee93b5a633b5cbba4b852608fd7
    Reviewed-on: https://gerrit.libreoffice.org/c/online/+/98497
    Tested-by: Jenkins
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com>
    Reviewed-by: Dennis Francis <dennis.fran...@collabora.com>

diff --git a/loleaflet/src/control/Control.ColumnHeader.js 
b/loleaflet/src/control/Control.ColumnHeader.js
index 8a07f1e86..ea806593c 100644
--- a/loleaflet/src/control/Control.ColumnHeader.js
+++ b/loleaflet/src/control/Control.ColumnHeader.js
@@ -563,21 +563,16 @@ L.Control.ColumnHeader = L.Control.Header.extend({
                var size = this._map.getSize();
                var drag = this._map.mouseEventToContainerPoint(e);
                var entryStart = this._dragEntry.pos - this._dragEntry.size;
-               var xdocpos = this._headerInfo.headerToDocPos(Math.max(drag.x, 
entryStart));
-               var ymin = this._map.getPixelBounds().min.y;
-               var ymax = ymin + size.y;
-               if (this._headerInfo.hasSplits()) {
-                       ymin = 0;
-               }
+               var xpos = Math.max(drag.x, entryStart);
                return [
-                       this._map.unproject(new L.Point(xdocpos, ymin)),
-                       this._map.unproject(new L.Point(xdocpos, ymax)),
+                       this._map.unproject(new L.Point(xpos, 0)),
+                       this._map.unproject(new L.Point(xpos, size.y)),
                ];
        },
 
        onDragStart: function (item, start, offset, e) {
                if (!this._vertLine) {
-                       this._vertLine = L.polyline(this._getVertLatLng(start, 
offset, e), {color: 'darkblue', weight: 1});
+                       this._vertLine = L.polyline(this._getVertLatLng(start, 
offset, e), {color: 'darkblue', weight: 1, fixed: true});
                }
                else {
                        this._vertLine.setLatLngs(this._getVertLatLng(start, 
offset, e));
diff --git a/loleaflet/src/control/Control.RowHeader.js 
b/loleaflet/src/control/Control.RowHeader.js
index 2e55fc4b7..14f568187 100644
--- a/loleaflet/src/control/Control.RowHeader.js
+++ b/loleaflet/src/control/Control.RowHeader.js
@@ -519,21 +519,16 @@ L.Control.RowHeader = L.Control.Header.extend({
                var size = this._map.getSize();
                var drag = this._map.mouseEventToContainerPoint(e);
                var entryStart = this._dragEntry.pos - this._dragEntry.size;
-               var ydocpos = this._headerInfo.headerToDocPos(Math.max(drag.y, 
entryStart));
-               var xmin = this._map.getPixelBounds().min.x;
-               var xmax = xmin + size.x;
-               if (this._headerInfo.hasSplits()) {
-                       xmin = 0;
-               }
+               var ypos = Math.max(drag.y, entryStart);
                return [
-                       this._map.unproject(new L.Point(xmin, ydocpos)),
-                       this._map.unproject(new L.Point(xmax, ydocpos)),
+                       this._map.unproject(new L.Point(0, ypos)),
+                       this._map.unproject(new L.Point(size.x, ypos)),
                ];
        },
 
        onDragStart: function (item, start, offset, e) {
                if (!this._horzLine) {
-                       this._horzLine = L.polyline(this._getHorzLatLng(start, 
offset, e), {color: 'darkblue', weight: 1});
+                       this._horzLine = L.polyline(this._getHorzLatLng(start, 
offset, e), {color: 'darkblue', weight: 1, fixed: true});
                }
                else {
                        this._horzLine.setLatLngs(this._getHorzLatLng(start, 
offset, e));
diff --git a/loleaflet/src/layer/vector/Polyline.js 
b/loleaflet/src/layer/vector/Polyline.js
index 0cab5e463..69f636248 100644
--- a/loleaflet/src/layer/vector/Polyline.js
+++ b/loleaflet/src/layer/vector/Polyline.js
@@ -138,8 +138,8 @@ L.Polyline = L.Path.extend({
 
                if (this._latlngs.length) {
                        this._pxBounds = new L.Bounds(
-                               
this._map.latLngToLayerPoint(this._bounds.getSouthWest())._subtract(p),
-                               
this._map.latLngToLayerPoint(this._bounds.getNorthEast())._add(p));
+                               
this._latLngToPoint(this._bounds.getSouthWest())._subtract(p),
+                               
this._latLngToPoint(this._bounds.getNorthEast())._add(p));
                }
        },
 
@@ -153,7 +153,7 @@ L.Polyline = L.Path.extend({
                if (flat) {
                        ring = [];
                        for (i = 0; i < len; i++) {
-                               ring[i] = 
this._map.latLngToLayerPoint(latlngs[i]);
+                               ring[i] = this._latLngToPoint(latlngs[i]);
                        }
                        result.push(ring);
                } else {
@@ -163,6 +163,14 @@ L.Polyline = L.Path.extend({
                }
        },
 
+       _latLngToPoint: function (latlng) {
+               if (this.options.fixed) {
+                       return this._map.project(latlng);
+               }
+
+               return this._map.latLngToLayerPoint(latlng);
+       },
+
        // clip polyline by renderer bounds so that we have less to render for 
performance
        _clipPoints: function () {
                if (this.options.noClip || this._renderer instanceof 
L.SplitPanesSVG) {
diff --git a/loleaflet/src/layer/vector/SplitPanesSVG.js 
b/loleaflet/src/layer/vector/SplitPanesSVG.js
index 4ad5de6fd..d114c5cb2 100644
--- a/loleaflet/src/layer/vector/SplitPanesSVG.js
+++ b/loleaflet/src/layer/vector/SplitPanesSVG.js
@@ -92,7 +92,9 @@ L.SplitPanesSVG = L.SplitPanesRenderer.extend({
                        // is always glued to (0, 0) of the document.
                        // The size is always the map's view size.
                        pos = 
this._map.containerPointToLayerPointIgnoreSplits(topLeft).round();
-                       boundPos = topLeft.subtract(pixelOrigin);
+                       // All paths in this should set their DOM node 
positions in document coordinates rather than in layer coordinates.
+                       // This is taken care of if the paths are derived from 
L.Polyline
+                       boundPos = topLeft;
                }
                else if (rendererId === 'bottomright') {
                        // this is the default splitPane where are no visible 
splits (splitPos = (0, 0)).
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to