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

Aditya Dewan iit2015097 at iiita.ac.in
Thu Jul 6 07:42:45 UTC 2017


 loleaflet/dist/editor.css             |    3 ++
 loleaflet/dist/toolbar/toolbar.js     |   51 ++++++++++++++++++++++++++++++----
 loleaflet/main.css                    |    1 
 loleaflet/src/layer/tile/TileLayer.js |   23 ++++++++++++++-
 loleaflet/src/map/Map.js              |    6 ++++
 5 files changed, 77 insertions(+), 7 deletions(-)

New commits:
commit 49032d1dab93c74ae57bd92c2a72d019a9340cf6
Author: Aditya Dewan <iit2015097 at iiita.ac.in>
Date:   Mon Jun 26 07:16:12 2017 +0530

    tdf#108341 Follow any user from the userlist
    
    Change-Id: Iab6d386f0c0b294dcd5adc9bf654de88a3804933
    Reviewed-on: https://gerrit.libreoffice.org/39247
    Reviewed-by: pranavk <pranavk at collabora.co.uk>
    Tested-by: pranavk <pranavk at collabora.co.uk>

diff --git a/loleaflet/dist/editor.css b/loleaflet/dist/editor.css
new file mode 100644
index 00000000..be24c214
--- /dev/null
+++ b/loleaflet/dist/editor.css
@@ -0,0 +1,3 @@
+.selected-user {
+	background-color: darkgrey;
+}
\ No newline at end of file
diff --git a/loleaflet/dist/toolbar/toolbar.js b/loleaflet/dist/toolbar/toolbar.js
index 50392499..b615af4d 100644
--- a/loleaflet/dist/toolbar/toolbar.js
+++ b/loleaflet/dist/toolbar/toolbar.js
@@ -1577,15 +1577,38 @@ map.on('keydown', function (e) {
 });
 
 function onUseritemClicked(e) {
+	var docLayer = map._docLayer;
 	var viewId = parseInt(e.currentTarget.id.replace('user-', ''));
 
-	if (map._docLayer) {
-		if (map.getDocType() === 'spreadsheet') {
-			map._docLayer.goToCellViewCursor(viewId);
-		} else if (map.getDocType() === 'text') {
-			map._docLayer.goToViewCursor(viewId);
-		}
+	if (map.getDocType() === 'spreadsheet') {
+		docLayer.goToCellViewCursor(viewId);
+	} else if (map.getDocType() === 'text' || map.getDocType() === 'presentation') {
+		docLayer.goToViewCursor(viewId);
 	}
+
+	if (viewId === map._docLayer._viewId) {
+		$('#tb_toolbar-down_item_userlist').w2overlay('');
+		return;
+	} else if (docLayer._followThis !== -1) {
+		map.fire('setFollowOff');
+	}
+
+	docLayer._followThis = viewId;
+	docLayer._followUser = true;
+	docLayer._followEditor = false;
+
+	selectUser(viewId);
+}
+
+function selectUser(viewId) {
+	var userlistItem = w2ui['toolbar-down'].get('userlist');
+	userlistItem.html = $(userlistItem.html).find('#user-' + viewId).addClass('selected-user').parent().parent().parent()[0].outerHTML;
+	$('#tb_toolbar-down_item_userlist').w2overlay('');
+}
+
+function deselectUser(viewId) {
+	var userlistItem = w2ui['toolbar-down'].get('userlist');
+	userlistItem.html = $(userlistItem.html).find('#user-' + viewId).removeClass('selected-user').parent().parent().parent()[0].outerHTML;
 }
 
 function getUserItem(viewId, userName, extraInfo, color) {
@@ -1670,11 +1693,27 @@ map.on('removeview', function(e) {
 		userPopupTimeout = null;
 	}, 3000);
 
+	if (e.viewId === map._docLayer._followThis) {
+		map._docLayer._followThis = -1;
+		map._docLayer._followUser = false;
+	}
+
 	var userlistItem = w2ui['toolbar-down'].get('userlist');
 	userlistItem.html = $(userlistItem.html).find('#user-' + e.viewId).remove().end()[0].outerHTML;
 	updateUserListCount();
 });
 
+map.on('setFollowOff', function(e) {
+	var docLayer = map._docLayer;
+	var viewId = docLayer._followThis;
+	if (viewId !== -1 && map._viewInfo[viewId]) {
+		deselectUser(viewId);
+	}
+	docLayer._followThis = -1;
+	docLayer._followUser = false;
+	docLayer._followEditor = false;
+});
+
 $(window).resize(function() {
 	resizeToolbar();
 });
diff --git a/loleaflet/main.css b/loleaflet/main.css
index 1d8ccec4..729b21b3 100644
--- a/loleaflet/main.css
+++ b/loleaflet/main.css
@@ -6,6 +6,7 @@
 @import url('dist/scrollBar.css');
 @import url('dist/searchControl.css');
 @import url('dist/spreadsheet.css');
+ at import url('dist/editor.css');
 
 @import url('plugins/draw-0.2.4/dist/leaflet.draw.css');
 
diff --git a/loleaflet/src/layer/tile/TileLayer.js b/loleaflet/src/layer/tile/TileLayer.js
index 3dfe8ac2..9c20b055 100644
--- a/loleaflet/src/layer/tile/TileLayer.js
+++ b/loleaflet/src/layer/tile/TileLayer.js
@@ -142,6 +142,10 @@ L.TileLayer = L.GridLayer.extend({
 			'tiletwipwidth=' + this.options.tileWidthTwips + ' ' +
 			'tiletwipheight=' + this.options.tileHeightTwips;
 
+		this._followThis = -1;
+		this._followUser = false;
+		this._followEditor = false;
+
 		// Mark visible area as dirty by default.
 		this._invalidateClientVisibleArea();
 	},
@@ -702,6 +706,7 @@ L.TileLayer = L.GridLayer.extend({
 	},
 
 	_onInvalidateCursorMsg: function (textMsg) {
+		var docLayer = this._map._docLayer;
 		var 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]));
@@ -711,6 +716,10 @@ L.TileLayer = L.GridLayer.extend({
 						this._twipsToLatLng(bottomRightTwips, this._map.getZoom()));
 		this._visibleCursorOnLostFocus = this._visibleCursor;
 		this._isCursorOverlayVisible = true;
+		if ((docLayer._followEditor || docLayer._followUser) && this._map.lastActionByUser) {
+			this._map.fire('setFollowOff');
+		}
+		this._map.lastActionByUser = false;
 		this._onUpdateCursor();
 	},
 
@@ -718,6 +727,7 @@ L.TileLayer = L.GridLayer.extend({
 		textMsg = textMsg.substring('invalidateviewcursor:'.length + 1);
 		var obj = JSON.parse(textMsg);
 		var viewId = parseInt(obj.viewId);
+		var docLayer = this._map._docLayer;
 
 		// Ignore if viewid is same as ours or not in our db
 		if (viewId === this._viewId || !this._map._viewInfo[viewId]) {
@@ -741,6 +751,15 @@ L.TileLayer = L.GridLayer.extend({
 		}
 
 		this._onUpdateViewCursor(viewId);
+
+		if (docLayer._followThis === viewId && (docLayer._followEditor || docLayer._followUser)) {
+			if (this._map.getDocType() === 'text' || this._map.getDocType() === 'presentation') {
+				this.goToViewCursor(viewId);
+			}
+			else if (this._map.getDocType() === 'spreadsheet') {
+				this.goToCellViewCursor(viewId);
+			}
+		}
 	},
 
 	_onCellViewCursorMsg: function (textMsg) {
@@ -1315,6 +1334,7 @@ L.TileLayer = L.GridLayer.extend({
 	// Update cursor layer (blinking cursor).
 	_onUpdateCursor: function (e) {
 		var cursorPos = this._visibleCursor.getNorthWest();
+		var docLayer = this._map._docLayer;
 
 		if (!e && !this._map.getBounds().contains(this._visibleCursor) && this._isCursorVisible) {
 			var center = this._map.project(cursorPos);
@@ -1323,7 +1343,8 @@ L.TileLayer = L.GridLayer.extend({
 			center.y = Math.round(center.y < 0 ? 0 : center.y);
 
 			if (!(this._selectionHandles.start && this._selectionHandles.start.isDragged) &&
-			    !(this._selectionHandles.end && this._selectionHandles.end.isDragged)) {
+			    !(this._selectionHandles.end && this._selectionHandles.end.isDragged) &&
+			    !(docLayer._followEditor || docLayer._followUser)) {
 				this._map.fire('scrollto', {x: center.x, y: center.y});
 			}
 		}
diff --git a/loleaflet/src/map/Map.js b/loleaflet/src/map/Map.js
index 29a7cf8e..9df2940e 100644
--- a/loleaflet/src/map/Map.js
+++ b/loleaflet/src/map/Map.js
@@ -1026,6 +1026,12 @@ L.Map = L.Evented.extend({
 			}
 		}
 
+		// we need to keep track about the last action, this
+		// will help us to avoid wrongly removing the editor
+		if (type === 'click' || type === 'keypress') {
+			this.lastActionByUser = true;
+		}
+
 		// we need to keep track if we have entered/left the map
 		this._mouseEnteringLeaving = false;
 		// mouse leaving the map ?


More information about the Libreoffice-commits mailing list