loleaflet/src/control/Parts.js | 1 loleaflet/src/layer/tile/TileLayer.js | 59 ++++++++++++++++++++++------------ 2 files changed, 40 insertions(+), 20 deletions(-)
New commits: commit 8bd7d83bdcaa2d9654633954f43695a53e07be91 Author: Pranav Kant <pran...@collabora.co.uk> Date: Thu Sep 15 00:12:17 2016 +0530 loleaflet: Handle multiview text selections for part documents Change-Id: I56425cde49b2b3b319204d7172f4ec4080b5bed1 diff --git a/loleaflet/src/control/Parts.js b/loleaflet/src/control/Parts.js index 55e9dbb..cdde4d1 100644 --- a/loleaflet/src/control/Parts.js +++ b/loleaflet/src/control/Parts.js @@ -34,6 +34,7 @@ L.Map.include({ docLayer.eachView(docLayer._viewCursors, docLayer._onUpdateViewCursor, docLayer); docLayer.eachView(docLayer._cellViewCursors, docLayer._onUpdateCellViewCursor, docLayer); docLayer.eachView(docLayer._graphicViewMarkers, docLayer._onUpdateGraphicViewSelection, docLayer); + docLayer.eachView(docLayer._viewSelections, docLayer._onUpdateTextViewSelection, docLayer); docLayer._clearSelections(); docLayer._updateOnChangePart(); docLayer._pruneTiles(); diff --git a/loleaflet/src/layer/tile/TileLayer.js b/loleaflet/src/layer/tile/TileLayer.js index 030b4b4..e6e2c7c 100644 --- a/loleaflet/src/layer/tile/TileLayer.js +++ b/loleaflet/src/layer/tile/TileLayer.js @@ -719,8 +719,8 @@ L.TileLayer = L.GridLayer.extend({ } // Remove selection, if any. - if (this._viewSelections[viewId]) { - this._viewSelectionsGroup.removeLayer(this._viewSelections[viewId]); + if (this._viewSelections[viewId] && this._viewSelections[viewId].selection) { + this._viewSelectionsGroup.removeLayer(this._viewSelections[viewId].selection); } // Remove the view and update (to refresh as needed). @@ -914,6 +914,7 @@ L.TileLayer = L.GridLayer.extend({ textMsg = textMsg.substring('textviewselection:'.length + 1); var obj = JSON.parse(textMsg); var viewId = parseInt(obj.viewId); + var viewPart = parseInt(obj.part); // Ignore if viewid is same as ours if (viewId === this._viewId) { @@ -921,9 +922,7 @@ L.TileLayer = L.GridLayer.extend({ } var strTwips = obj.selection.match(/\d+/g); - if (this._viewSelections[viewId]) { - this._viewSelectionsGroup.removeLayer(this._viewSelections[viewId]); - } + this._viewSelections[viewId] = this._viewSelections[viewId] || {}; if (strTwips != null) { var rectangles = []; for (var i = 0; i < strTwips.length; i += 4) { @@ -935,16 +934,13 @@ L.TileLayer = L.GridLayer.extend({ rectangles.push([bottomLeftTwips, bottomRightTwips, topLeftTwips, topRightTwips]); } - var polygons = L.PolyUtil.rectanglesToPolygons(rectangles, this); - var selection = new L.Polygon(polygons, { - pointerEvents: 'none', - fillColor: L.LOUtil.getViewIdHexColor(viewId), - fillOpacity: 0.25, - weight: 2, - opacity: 0.25}); - this._viewSelections[viewId] = selection; - this._viewSelectionsGroup.addLayer(selection); + this._viewSelections[viewId].part = viewPart; + this._viewSelections[viewId].polygons = L.PolyUtil.rectanglesToPolygons(rectangles, this); + } else { + this._viewSelections[viewId].polygons = null; } + + this._onUpdateTextViewSelection(viewId); }, _onTextSelectionContentMsg: function (textMsg) { @@ -1177,6 +1173,35 @@ L.TileLayer = L.GridLayer.extend({ } }, + _onUpdateTextViewSelection: function (viewId) { + viewId = parseInt(viewId); + var viewPolygons = this._viewSelections[viewId].polygons; + var viewSelection = this._viewSelections[viewId].selection; + var viewPart = this._viewSelections[viewId].part; + + if (viewPolygons && + (this._docType === 'text' || this._selectedPart === viewPart)) { + + // Reset previous selections + if (viewSelection) { + this._viewSelectionsGroup.removeLayer(viewSelection); + } + + viewSelection = new L.Polygon(viewPolygons, { + pointerEvents: 'none', + fillColor: L.LOUtil.getViewIdHexColor(viewId), + fillOpacity: 0.25, + weight: 2, + opacity: 0.25 + }); + this._viewSelections[viewId].selection = viewSelection; + this._viewSelectionsGroup.addLayer(viewSelection); + } + else if (viewSelection) { + this._viewSelectionsGroup.removeLayer(viewSelection); + } + }, + _onUpdateGraphicViewSelection: function (viewId) { var viewBounds = this._graphicViewMarkers[viewId].bounds; var viewMarker = this._graphicViewMarkers[viewId].marker; commit 4b18ca3772449d4f8ebd757b01a0efbfcb5c471a Author: Pranav Kant <pran...@collabora.co.uk> Date: Wed Sep 14 20:07:48 2016 +0530 loleaflet: Remove unused code Change-Id: Ieb12e03b68eaacb99acb9853d02191c165f5b70c diff --git a/loleaflet/src/layer/tile/TileLayer.js b/loleaflet/src/layer/tile/TileLayer.js index bcb2efe..030b4b4 100644 --- a/loleaflet/src/layer/tile/TileLayer.js +++ b/loleaflet/src/layer/tile/TileLayer.js @@ -884,7 +884,6 @@ L.TileLayer = L.GridLayer.extend({ this._selections.clearLayers(); if (strTwips != null) { var rectangles = []; - var selectionCenter = new L.Point(0, 0); for (var i = 0; i < strTwips.length; i += 4) { var topLeftTwips = new L.Point(parseInt(strTwips[i]), parseInt(strTwips[i + 1])); var offset = new L.Point(parseInt(strTwips[i + 2]), parseInt(strTwips[i + 3])); @@ -892,8 +891,6 @@ L.TileLayer = L.GridLayer.extend({ var bottomLeftTwips = topLeftTwips.add(new L.Point(0, offset.y)); var bottomRightTwips = topLeftTwips.add(offset); rectangles.push([bottomLeftTwips, bottomRightTwips, topLeftTwips, topRightTwips]); - selectionCenter = selectionCenter.add(topLeftTwips); - selectionCenter = selectionCenter.add(offset.divideBy(2)); } var polygons = L.PolyUtil.rectanglesToPolygons(rectangles, this); @@ -929,7 +926,6 @@ L.TileLayer = L.GridLayer.extend({ } if (strTwips != null) { var rectangles = []; - var selectionCenter = new L.Point(0, 0); for (var i = 0; i < strTwips.length; i += 4) { var topLeftTwips = new L.Point(parseInt(strTwips[i]), parseInt(strTwips[i + 1])); var offset = new L.Point(parseInt(strTwips[i + 2]), parseInt(strTwips[i + 3])); @@ -937,8 +933,6 @@ L.TileLayer = L.GridLayer.extend({ var bottomLeftTwips = topLeftTwips.add(new L.Point(0, offset.y)); var bottomRightTwips = topLeftTwips.add(offset); rectangles.push([bottomLeftTwips, bottomRightTwips, topLeftTwips, topRightTwips]); - selectionCenter = selectionCenter.add(topLeftTwips); - selectionCenter = selectionCenter.add(offset.divideBy(2)); } var polygons = L.PolyUtil.rectanglesToPolygons(rectangles, this); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits