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

Henry Castro hcastro at collabora.com
Wed Sep 7 16:16:52 UTC 2016


 loleaflet/src/control/Parts.js        |    1 
 loleaflet/src/layer/marker/Cursor.js  |   33 +++++++++++--------
 loleaflet/src/layer/tile/TileLayer.js |   58 +++++++++++++++++++---------------
 3 files changed, 54 insertions(+), 38 deletions(-)

New commits:
commit a666c01c03ac3bd680239e22b84ba4fa2f6971e6
Author: Henry Castro <hcastro at collabora.com>
Date:   Wed Sep 7 12:16:23 2016 -0400

    loleaflet: fix part not taken into account for cursors
    
    Also refactor cursor marker

diff --git a/loleaflet/src/control/Parts.js b/loleaflet/src/control/Parts.js
index cf90a14..db63f95 100644
--- a/loleaflet/src/control/Parts.js
+++ b/loleaflet/src/control/Parts.js
@@ -31,6 +31,7 @@ L.Map.include({
 			docType: docLayer._docType
 		});
 		this._socket.sendMessage('setclientpart part=' + docLayer._selectedPart);
+		docLayer._updateViewCursors();
 		docLayer._clearSelections();
 		docLayer._updateOnChangePart();
 		docLayer._pruneTiles();
diff --git a/loleaflet/src/layer/marker/Cursor.js b/loleaflet/src/layer/marker/Cursor.js
index cebc657..7fade22 100644
--- a/loleaflet/src/layer/marker/Cursor.js
+++ b/loleaflet/src/layer/marker/Cursor.js
@@ -8,18 +8,25 @@ L.Cursor = L.Layer.extend({
 		opacity: 1
 	},
 
-	initialize: function (latlng, options) {
+	initialize: function (latlng, size, options) {
 		L.setOptions(this, options);
 		this._latlng = L.latLng(latlng);
+		this._size = L.point(size);
 	},
 
 	onAdd: function () {
-		this._initLayout();
+		if (!this._container) {
+			this._initLayout();
+		}
+
 		this.update();
+		this.getPane().appendChild(this._container);
 	},
 
 	onRemove: function () {
-		L.DomUtil.remove(this._container);
+		if (this._container) {
+			this.getPane().removeChild(this._container);
+		}
 	},
 
 	getEvents: function () {
@@ -32,16 +39,18 @@ L.Cursor = L.Layer.extend({
 		return this._latlng;
 	},
 
-	setLatLng: function (latlng) {
+	setLatLng: function (latlng, size) {
 		var oldLatLng = this._latlng;
 		this._latlng = L.latLng(latlng);
+		this._size = L.point(size);
 		this.update();
 		return this.fire('move', {oldLatLng: oldLatLng, latlng: this._latlng});
 	},
 
 	update: function () {
-		if (this._container) {
+		if (this._container && this._map) {
 			var pos = this._map.latLngToLayerPoint(this._latlng).round();
+			this._setSize();
 			this._setPos(pos);
 		}
 		return this;
@@ -71,10 +80,6 @@ L.Cursor = L.Layer.extend({
 		L.DomEvent
 			.disableClickPropagation(this._cursor)
 			.disableScrollPropagation(this._container);
-
-		if (this._container) {
-			this.getPane().appendChild(this._container);
-		}
 	},
 
 	_setPos: function (pos) {
@@ -97,14 +102,14 @@ L.Cursor = L.Layer.extend({
 		L.DomUtil.setOpacity(this._container, opacity);
 	},
 
-	setSize: function (size) {
-		this._cursor.style.height = size.y + 'px';
-		this._container.style.top = '-' + (this._container.clientHeight - size.y - 2) / 2 + 'px';
+	_setSize: function () {
+		this._cursor.style.height = this._size.y + 'px';
+		this._container.style.top = '-' + (this._container.clientHeight - this._size.y - 2) / 2 + 'px';
 	}
 });
 
-L.cursor = function (latlng, options) {
-	return new L.Cursor(latlng, options);
+L.cursor = function (latlng, size, options) {
+	return new L.Cursor(latlng, size, options);
 };
 
 L.Cursor.getCursorURL = function (localPath) {
diff --git a/loleaflet/src/layer/tile/TileLayer.js b/loleaflet/src/layer/tile/TileLayer.js
index 388582f..9f70ac2 100644
--- a/loleaflet/src/layer/tile/TileLayer.js
+++ b/loleaflet/src/layer/tile/TileLayer.js
@@ -576,8 +576,12 @@ L.TileLayer = L.GridLayer.extend({
 		this._viewCursors[viewId].bounds = new L.LatLngBounds(
 			this._twipsToLatLng(topLeftTwips, this._map.getZoom()),
 			this._twipsToLatLng(bottomRightTwips, this._map.getZoom())),
-		this._viewCursors[viewId].part = obj.part;
-		this._viewCursors[viewId].visible = true;
+		this._viewCursors[viewId].part = parseInt(obj.part);
+
+		// FIXME. Server not sending view visible cursor
+		if (typeof this._viewCursors[viewId].visible === 'undefined') {
+			this._viewCursors[viewId].visible = true;
+		}
 
 		this._onUpdateViewCursor(viewId);
 	},
@@ -1098,14 +1102,12 @@ L.TileLayer = L.GridLayer.extend({
 
 		if (this._map._permission === 'edit' && this._isCursorVisible && this._isCursorOverlayVisible
 				&& !this._isEmptyRectangle(this._visibleCursor)) {
-			if (this._cursorMarker) {
-				this._map.removeLayer(this._cursorMarker);
+			if (!this._cursorMarker) {
+				this._cursorMarker = L.cursor(null, null, {blink: true});
 			}
 
-			this._cursorMarker = L.cursor(cursorPos, {blink: true});
+			this._cursorMarker.setLatLng(cursorPos, pixBounds.getSize().multiplyBy(this._map.getZoomScale(this._map.getZoom())));
 			this._map.addLayer(this._cursorMarker);
-			this._cursorMarker.setSize(pixBounds.getSize().multiplyBy(
-						this._map.getZoomScale(this._map.getZoom())));
 		}
 		else if (this._cursorMarker) {
 			this._map.removeLayer(this._cursorMarker);
@@ -1125,27 +1127,35 @@ L.TileLayer = L.GridLayer.extend({
 		var viewCursorPos = this._viewCursors[viewId].bounds.getNorthWest();
 		var viewCursorMarker = this._viewCursors[viewId].marker;
 		var viewCursorVisible = this._viewCursors[viewId].visible;
-
-		if (viewCursorVisible && !this._isEmptyRectangle(this._viewCursors[viewId].bounds)) {
-			if (viewCursorMarker) {
-				this._map.removeLayer(viewCursorMarker);
+		var viewPart = this._viewCursors[viewId].part;
+
+		if (viewCursorVisible && !this._isEmptyRectangle(this._viewCursors[viewId].bounds) &&
+		   (this._docType === 'text' || this._selectedPart === viewPart)) {
+			if (!viewCursorMarker) {
+				var viewCursorOptions = {
+					color: L.LOUtil.getViewIdHexColor(viewId),
+					blink: false,
+					header: true, // we want a 'hat' to our view cursors (which will contain view user names)
+					headerTimeout: 3000, // hide after some interval
+					headerName: this._map.getViewName(viewId)
+				};
+
+				viewCursorMarker = L.cursor(null, null, viewCursorOptions);
+				this._viewCursors[viewId].marker = viewCursorMarker;
 			}
-			var viewCursorOptions = {
-				color: L.LOUtil.getViewIdHexColor(viewId),
-				blink: false,
-				header: true, // we want a 'hat' to our view cursors (which will contain view user names)
-				headerTimeout: 3000, // hide after some interval
-				headerName: this._map.getViewName(viewId)
-			};
-			viewCursorMarker = L.cursor(viewCursorPos, viewCursorOptions);
-			this._map.addLayer(viewCursorMarker);
-			viewCursorMarker.setSize(pixBounds.getSize().multiplyBy(this._map.getZoomScale(this._map.getZoom())));
 
-		} else if (viewCursorMarker) {
-			this._map.removeLayer(this._viewCursors[viewId].marker);
+			viewCursorMarker.setLatLng(viewCursorPos, pixBounds.getSize().multiplyBy(this._map.getZoomScale(this._map.getZoom())));
+			this._map.addLayer(viewCursorMarker);
+		}
+		else if (viewCursorMarker) {
+			this._map.removeLayer(viewCursorMarker);
 		}
+	},
 
-		this._viewCursors[viewId].marker = viewCursorMarker;
+	_updateViewCursors: function () {
+		for (var key in this._viewCursors) {
+			this._onUpdateViewCursor(key);
+		}
 	},
 
 	// Update dragged graphics selection resize.


More information about the Libreoffice-commits mailing list