loleaflet/src/layer/tile/TileLayer.TableOverlay.js | 6 +++++- loleaflet/src/layer/tile/TileLayer.js | 12 ++++++++++-- loleaflet/src/layer/vector/SVGGroup.js | 9 ++++++++- loleaflet/src/map/handler/Map.TouchGesture.js | 16 ++++++++++++++-- 4 files changed, 37 insertions(+), 6 deletions(-)
New commits: commit b6dd960b50581927476baa6a667a836675d78817 Author: Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk> AuthorDate: Wed Oct 2 14:20:47 2019 +0200 Commit: Tomaž Vajngerl <qui...@gmail.com> CommitDate: Wed Oct 2 14:37:54 2019 +0200 tdf#125565 make it possible to select cells in a table Change-Id: If7f6b2cb3f2e8c6bf08b55c7a52ef6e96d388abe Reviewed-on: https://gerrit.libreoffice.org/80035 Reviewed-by: Tomaž Vajngerl <qui...@gmail.com> Tested-by: Tomaž Vajngerl <qui...@gmail.com> diff --git a/loleaflet/src/layer/tile/TileLayer.TableOverlay.js b/loleaflet/src/layer/tile/TileLayer.TableOverlay.js index 978a3ebc5..25e8f93e7 100644 --- a/loleaflet/src/layer/tile/TileLayer.TableOverlay.js +++ b/loleaflet/src/layer/tile/TileLayer.TableOverlay.js @@ -18,6 +18,9 @@ L.TileLayer.include({ var point = this._latLngToTwips(this._map.unproject(new L.Point(pixel, 0))); return point.x; }, + hasTableSelection: function () { + return this._currentTableData.rows != null || this._currentTableData.columns != null; + }, _initMoveMarkers: function () { this._tableMoveMarker = L.marker(new L.LatLng(0, 0), { icon: L.divIcon({ @@ -207,7 +210,6 @@ L.TileLayer.include({ textMsg = textMsg.substring('tableselected:'.length + 1); var message = JSON.parse(textMsg); this._currentTableData = message; - this._hasTableSelection = this._currentTableData.rows != null || this._currentTableData.columns != null; this._updateTableMarkers(); this._map.on('zoomend', L.bind(this._onZoomForTableMarkers, this)); }, @@ -335,6 +337,8 @@ L.TileLayer.include({ }, _onTableMoveMarkerDrag: function (event) { var mouseEvent; + if (this._graphicMarker == null) + return; if (event.type == 'dragstart') { mouseEvent = this._createNewMouseEvent('mousedown', event.originalEvent); this._graphicMarker._onDragStart(mouseEvent); diff --git a/loleaflet/src/layer/tile/TileLayer.js b/loleaflet/src/layer/tile/TileLayer.js index 0d1668489..24f681416 100644 --- a/loleaflet/src/layer/tile/TileLayer.js +++ b/loleaflet/src/layer/tile/TileLayer.js @@ -2058,12 +2058,14 @@ L.TileLayer = L.GridLayer.extend({ var aPos = this._latLngToTwips(e.pos); if (e.type === 'graphicmovestart') { this._graphicMarker.isDragged = true; + this._graphicMarker.setVisible(true); this._graphicMarker._startPos = aPos; } else if (e.type === 'graphicmoveend' && this._graphicMarker._startPos) { var deltaPos = aPos.subtract(this._graphicMarker._startPos); if (deltaPos.x === 0 && deltaPos.y === 0) { this._graphicMarker.isDragged = false; + this._graphicMarker.setVisible(false); return; } @@ -2129,6 +2131,7 @@ L.TileLayer = L.GridLayer.extend({ } this._map.sendUnoCommand('.uno:TransformDialog ', param); this._graphicMarker.isDragged = false; + this._graphicMarker.setVisible(false); } }, @@ -2142,6 +2145,7 @@ L.TileLayer = L.GridLayer.extend({ if (e.type === 'scalestart') { this._graphicMarker.isDragged = true; + this._graphicMarker.setVisible(true); if (selMax.x - selMin.x < 2) this._graphicMarker.dragHorizDir = 0; // overlapping handles else if (Math.abs(selMin.x - aPos.x) < 2) @@ -2283,6 +2287,7 @@ L.TileLayer = L.GridLayer.extend({ } this._graphicMarker.isDragged = false; + this._graphicMarker.setVisible(false); this._graphicMarker.dragHorizDir = undefined; this._graphicMarker.dragVertDir = undefined; } @@ -2291,6 +2296,7 @@ L.TileLayer = L.GridLayer.extend({ _onGraphicRotate: function (e) { if (e.type === 'rotatestart') { this._graphicMarker.isDragged = true; + this._graphicMarker.setVisible(true); } else if (e.type === 'rotateend') { var center = this._graphicSelectionTwips.getCenter(); @@ -2310,6 +2316,7 @@ L.TileLayer = L.GridLayer.extend({ }; this._map.sendUnoCommand('.uno:TransformDialog ', param); this._graphicMarker.isDragged = false; + this._graphicMarker.setVisible(false); } }, @@ -2515,9 +2522,9 @@ L.TileLayer = L.GridLayer.extend({ this._graphicMarker.dragging.enable(); this._graphicMarker.transform.enable({ scaling: extraInfo.isResizable, - rotation: extraInfo.isRotatable && !this._hasTableSelection, + rotation: extraInfo.isRotatable && !this.hasTableSelection(), uniformScaling: !this._isGraphicAngleDivisibleBy90(), - scaleSouthAndEastOnly: this._hasTableSelection}); + scaleSouthAndEastOnly: this.hasTableSelection()}); if (extraInfo.dragInfo && extraInfo.dragInfo.svg) { this._graphicMarker.removeEmbeddedSVG(); this._graphicMarker.addEmbeddedSVG(extraInfo.dragInfo.svg); @@ -2532,6 +2539,7 @@ L.TileLayer = L.GridLayer.extend({ this._graphicMarker.transform.disable(); this._map.removeLayer(this._graphicMarker); this._graphicMarker.isDragged = false; + this._graphicMarker.setVisible(false); } this._updateCursorAndOverlay(); }, diff --git a/loleaflet/src/layer/vector/SVGGroup.js b/loleaflet/src/layer/vector/SVGGroup.js index 132426d44..26cac2c8b 100644 --- a/loleaflet/src/layer/vector/SVGGroup.js +++ b/loleaflet/src/layer/vector/SVGGroup.js @@ -22,7 +22,14 @@ L.SVGGroup = L.Layer.extend({ this.on('dragstart scalestart rotatestart', this._showEmbeddedSVG, this); this.on('dragend scaleend rotateend', this._hideEmbeddedSVG, this); }, - + setVisible: function (visible) { + if (this._svg != null) { + if (visible) + this._svg.setAttribute('visibility', 'visible'); + else + this._svg.setAttribute('visibility', 'hidden'); + } + }, addEmbeddedSVG: function (svgString) { var parser = new DOMParser(); var doc = parser.parseFromString(svgString, 'image/svg+xml'); diff --git a/loleaflet/src/map/handler/Map.TouchGesture.js b/loleaflet/src/map/handler/Map.TouchGesture.js index be2d3813f..e4b4686f9 100644 --- a/loleaflet/src/map/handler/Map.TouchGesture.js +++ b/loleaflet/src/map/handler/Map.TouchGesture.js @@ -13,7 +13,8 @@ L.Map.TouchGesture = L.Handler.extend({ MAP: 1, CURSOR: 2, GRAPHIC: 4, - MARKER: 8 + MARKER: 8, + TABLE: 16 }, initialize: function (map) { @@ -152,7 +153,10 @@ L.Map.TouchGesture = L.Handler.extend({ if (this._marker) { this._state = L.Map.TouchGesture.MARKER; } else if (this._map._docLayer._graphicMarker && this._map._docLayer._graphicMarker.getBounds().contains(latlng)) { - this._state = L.Map.TouchGesture.GRAPHIC; + if (this._map._docLayer.hasTableSelection()) + this._state = L.Map.TouchGesture.TABLE; + else + this._state = L.Map.TouchGesture.GRAPHIC; } else if (this._map._docLayer._cellCursor && this._map._docLayer._cellCursor.contains(latlng)) { this._state = L.Map.TouchGesture.CURSOR; } else if (this._map._docLayer._cellCursor && funcWizardRangeBounds && funcWizardRangeBounds.contains(latlng)) { @@ -299,6 +303,8 @@ L.Map.TouchGesture = L.Handler.extend({ if (this._state === L.Map.TouchGesture.MARKER) { this._map._fireDOMEvent(this._marker, point, 'mousedown'); + } else if (this._state === L.Map.TouchGesture.TABLE) { + this._map._docLayer._postMouseEvent('buttondown', mousePos.x, mousePos.y, 1, 1, 0); } else if (this._state === L.Map.TouchGesture.GRAPHIC) { var mouseEvent = this._map._docLayer._createNewMouseEvent('mousedown', point); this._map._docLayer._graphicMarker._onDragStart(mouseEvent); @@ -323,6 +329,9 @@ L.Map.TouchGesture = L.Handler.extend({ var mouseEvent = this._map._docLayer._createNewMouseEvent('mousemove', point); this._map._docLayer._graphicMarker._onDrag(mouseEvent); this._moving = true; + } else if (this._state === L.Map.TouchGesture.TABLE) { + this._map._docLayer._postMouseEvent('move', mousePos.x, mousePos.y, 1, 1, 0); + this._moving = true; } else if (this._state === L.Map.TouchGesture.CURSOR) { this._map._docLayer._postMouseEvent('move', mousePos.x, mousePos.y, 1, 1, 0); } else { @@ -344,6 +353,9 @@ L.Map.TouchGesture = L.Handler.extend({ var mouseEvent = this._map._docLayer._createNewMouseEvent('mouseup', point); this._map._docLayer._graphicMarker._onDragEnd(mouseEvent); this._moving = false; + } else if (this._state === L.Map.TouchGesture.TABLE) { + this._map._docLayer._postMouseEvent('buttonup', mousePos.x, mousePos.y, 1, 1, 0); + this._moving = false; } else if (this._state === L.Map.TouchGesture.CURSOR) { this._map._docLayer._postMouseEvent('buttonup', mousePos.x, mousePos.y, 1, 1, 0); } else { _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits