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

Henry Castro hcastro at collabora.com
Tue May 26 17:54:46 PDT 2015


 loleaflet/src/layer/tile/TileLayer.js |   36 +++++++++++++++++++++++++++++++++-
 1 file changed, 35 insertions(+), 1 deletion(-)

New commits:
commit 9287074b75ddba51d59b6c99995227589f21d169
Author: Henry Castro <hcastro at collabora.com>
Date:   Tue May 26 20:52:35 2015 -0400

    Added cursor visible and invalidate cursor

diff --git a/loleaflet/src/layer/tile/TileLayer.js b/loleaflet/src/layer/tile/TileLayer.js
index e082883..d43158d 100644
--- a/loleaflet/src/layer/tile/TileLayer.js
+++ b/loleaflet/src/layer/tile/TileLayer.js
@@ -52,6 +52,9 @@ L.TileLayer = L.GridLayer.extend({
 			this.on('tileunload', this._onTileRemove);
 		}
 		this._documentInfo = '';
+		this._cursorVisible = false;
+		this._cursorBounds = null;
+		this._cursorMarker = null;
 	},
 
 	_initDocument: function () {
@@ -136,7 +139,22 @@ L.TileLayer = L.GridLayer.extend({
 			textMsg = String.fromCharCode.apply(null, bytes.subarray(0, index + 1));
 		}
 
-		if (textMsg.startsWith('status')) {
+		if (textMsg.startsWith('cursorvisible')) {
+			var command = textMsg.match('cursorvisible: true');
+			this._cursorVisible = command == undefined ? false : true;
+			this._onUpdateCursor();
+		}
+		else if (textMsg.startsWith('invalidatecursor')) {
+			strTwips = textMsg.match(/\d+/g);
+			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);
+			this._cursorBounds = new L.LatLngBounds(
+							this._twipsToLatLng(topLeftTwips),
+							this._twipsToLatLng(bottomRightTwips));
+			this._onUpdateCursor();
+		}
+		else if (textMsg.startsWith('status')) {
 			var command = this._parseServerCmd(textMsg);
 			if (command.width && command.height && this._documentInfo !== textMsg) {
 				this._docWidthTwips = command.width;
@@ -523,6 +541,22 @@ L.TileLayer = L.GridLayer.extend({
 		if (this._cursorMarker) {
 			this._postKeyboardEvent('input', e.originalEvent.charCode, e.originalEvent.keyCode);
 		}
+	},
+
+	_onUpdateCursor: function () {
+		if (this._cursorVisible && this._cursorBounds ) {
+			if (this._cursorMarker)
+				this._map.removeLayer(this._cursorMarker);
+
+			var latlngs = L.rectangle(this._cursorBounds).getLatLngs();
+			// TODO replace for a blinking cursor image.
+			this._cursorMarker = L.polyline(latlngs.concat([latlngs[0]]));
+			this._map.addLayer(this._cursorMarker);
+		}
+		else {
+			if (this._cursorMarker)
+				this._map.removeLayer(this._cursorMarker);
+		}
 	}
 });
 


More information about the Libreoffice-commits mailing list