[Libreoffice-commits] online.git: loleaflet/src

Henry Castro hcastro at collabora.com
Tue Sep 13 20:25:19 UTC 2016


 loleaflet/src/control/Parts.js        |    1 
 loleaflet/src/layer/tile/TileLayer.js |   55 ++++++++++++++++++++++++----------
 2 files changed, 41 insertions(+), 15 deletions(-)

New commits:
commit 663f47b858749688588cc399c16ecfe126618f50
Author: Henry Castro <hcastro at collabora.com>
Date:   Tue Sep 13 16:18:00 2016 -0400

    loleaflet: update graphic markers
    
    LayerGroup handle internal list
    Map handle internal list
    TileLayer handle internal list
    
    Reduce internal list

diff --git a/loleaflet/src/control/Parts.js b/loleaflet/src/control/Parts.js
index 45fd68d..f6c9a18 100644
--- a/loleaflet/src/control/Parts.js
+++ b/loleaflet/src/control/Parts.js
@@ -33,6 +33,7 @@ L.Map.include({
 		this._socket.sendMessage('setclientpart part=' + docLayer._selectedPart);
 		docLayer._updateViewCursors();
 		docLayer._updateCellViewCursors();
+		docLayer._updateGraphicViewSelections();
 		docLayer._clearSelections();
 		docLayer._updateOnChangePart();
 		docLayer._pruneTiles();
diff --git a/loleaflet/src/layer/tile/TileLayer.js b/loleaflet/src/layer/tile/TileLayer.js
index 8b40da6..e9594ae 100644
--- a/loleaflet/src/layer/tile/TileLayer.js
+++ b/loleaflet/src/layer/tile/TileLayer.js
@@ -146,10 +146,6 @@ L.TileLayer = L.GridLayer.extend({
 		map.addLayer(this._viewSelectionsGroup);
 		this._viewSelections = {};
 
-		this._graphicViewMarkersGroup = new L.LayerGroup();
-		map.addLayer(this._graphicViewMarkersGroup);
-		this._graphicViewMarkers = {};
-
 		this._searchResultsLayer = new L.LayerGroup();
 		map.addLayer(this._searchResultsLayer);
 
@@ -500,23 +496,21 @@ L.TileLayer = L.GridLayer.extend({
 		}
 
 		var strTwips = obj.selection.match(/\d+/g);
-		if (this._graphicViewMarkers[viewId]) {
-			this._graphicViewMarkersGroup.removeLayer(this._graphicViewMarkers[viewId]);
-		}
+		this._graphicViewMarkers[viewId] = this._graphicViewMarkers[viewId] || {};
+		this._graphicViewMarkers[viewId].part = parseInt(obj.part);
 		if (strTwips != null) {
 			var topLeftTwips = new L.Point(parseInt(strTwips[0]), parseInt(strTwips[1]));
 			var offset = new L.Point(parseInt(strTwips[2]), parseInt(strTwips[3]));
 			var bottomRightTwips = topLeftTwips.add(offset);
-			var graphicSelection = new L.LatLngBounds(
+			this._graphicViewMarkers[viewId].bounds = new L.LatLngBounds(
 				this._twipsToLatLng(topLeftTwips, this._map.getZoom()),
 				this._twipsToLatLng(bottomRightTwips, this._map.getZoom()));
-			this._graphicViewMarkers[viewId] = L.rectangle(graphicSelection, {
-				pointerEvents: 'none',
-				fill: false,
-				color: L.LOUtil.getViewIdHexColor(viewId)
-			});
-			this._graphicViewMarkersGroup.addLayer(this._graphicViewMarkers[viewId]);
 		}
+		else {
+			this._graphicViewMarkers[viewId].bounds = L.LatLngBounds.createDefault();
+		}
+
+		this._onUpdateGraphicViewSelection(viewId);
 	},
 
 	_onCellCursorMsg: function (textMsg) {
@@ -1153,7 +1147,7 @@ L.TileLayer = L.GridLayer.extend({
 	},
 
 	// Update colored non-blinking view cursor
-	_onUpdateViewCursor: function(viewId) {
+	_onUpdateViewCursor: function (viewId) {
 		if (typeof this._viewCursors[viewId] !== 'object' ||
 		    typeof this._viewCursors[viewId].bounds !== 'object') {
 			return;
@@ -1189,6 +1183,31 @@ L.TileLayer = L.GridLayer.extend({
 		}
 	},
 
+	_onUpdateGraphicViewSelection: function (viewId) {
+		var viewBounds = this._graphicViewMarkers[viewId].bounds;
+		var viewMarker = this._graphicViewMarkers[viewId].marker;
+		var viewPart = this._graphicViewMarkers[viewId].part;
+
+		if (!this._isEmptyRectangle(viewBounds) &&
+		   (this._docType === 'text' || this._selectedPart === viewPart)) {
+			if (!viewMarker) {
+				viewMarker = L.rectangle(viewBounds, {
+					pointerEvents: 'none',
+					fill: false,
+					color: L.LOUtil.getViewIdHexColor(viewId)
+				});
+				this._graphicViewMarkers[viewId].marker = viewMarker;
+			}
+			else {
+				viewMarker.setBounds(viewBounds);
+			}
+			this._map.addLayer(viewMarker);
+		}
+		else if (viewMarker) {
+			this._map.removeLayer(viewMarker);
+		}
+	},
+
 	_updateViewCursors: function () {
 		for (var key in this._viewCursors) {
 			this._onUpdateViewCursor(key);
@@ -1201,6 +1220,12 @@ L.TileLayer = L.GridLayer.extend({
 		}
 	},
 
+	_updateGraphicViewSelections: function () {
+		for (var key in this._graphicViewMarkers) {
+			this._onUpdateGraphicViewSelection(key);
+		}
+	},
+
 	// Update dragged graphics selection resize.
 	_onGraphicEdit: function (e) {
 		if (!e.handle) { return; }


More information about the Libreoffice-commits mailing list