[Libreoffice-commits] online.git: Branch 'distro/collabora/collabora-online-1-0' - 4 commits - loleaflet/dist loleaflet/src

Pranav Kant pranavk at collabora.co.uk
Fri Jul 1 13:13:24 UTC 2016


 loleaflet/dist/loleaflet.html                 |    2 
 loleaflet/dist/toolbar/toolbar.js             |   21 +++--
 loleaflet/src/control/Control.ColumnHeader.js |   24 ++----
 loleaflet/src/control/Control.ContextMenu.js  |    2 
 loleaflet/src/control/Control.Menubar.js      |   93 ++++++++++++++------------
 loleaflet/src/control/Control.PartsPreview.js |    2 
 loleaflet/src/control/Control.RowHeader.js    |   24 ++----
 loleaflet/src/control/Control.Tabs.js         |   24 +++---
 loleaflet/src/core/Socket.js                  |    2 
 loleaflet/src/layer/tile/TileLayer.js         |   49 ++++++-------
 loleaflet/src/map/Map.js                      |   17 ++--
 loleaflet/src/map/handler/Map.Mouse.js        |    7 -
 12 files changed, 129 insertions(+), 138 deletions(-)

New commits:
commit 18881856219d90ee5942eb375a7b8824e6461f2d
Author: Pranav Kant <pranavk at collabora.co.uk>
Date:   Sat Jun 25 16:05:40 2016 +0530

    loleaflet: Simplify enable/disable logic in menubar
    
    There is still one problem though, that if already opened
    document is opened in a different browser window, it doesn't
    receive any command states which shows enable/disable states of
    menubar items incorrectly.
    
    Change-Id: Ib03f1becfb6585fed075bb5f1bf9c587063323a6
    (cherry picked from commit 1106c0a5acf36f21fd433e9b183eaaf7fc02be91)

diff --git a/loleaflet/src/control/Control.Menubar.js b/loleaflet/src/control/Control.Menubar.js
index 709a6bb..e2113b7 100644
--- a/loleaflet/src/control/Control.Menubar.js
+++ b/loleaflet/src/control/Control.Menubar.js
@@ -214,36 +214,41 @@ L.Control.Menubar = L.Control.extend({
 			var aItem = this;
 			var type = $(aItem).data('type');
 			var id = $(aItem).data('id');
-			if (id === 'fullscreen' && (msie > 0 || trident > 0 || edge > 0)) { // Full screen works weirdly on IE 11 and on Edge
-				$(aItem).addClass('disabled');
-				var index = self.options.allowedViewModeActions.indexOf('fullscreen');
-				if (index > 0) {
-					self.options.allowedViewModeActions.splice(index, 1);
-				}
-			}
-			if (map._permission !== 'edit') {
-				var found = false;
-				for (var i in self.options.allowedViewModeActions) {
-					if (self.options.allowedViewModeActions[i] === id) {
-						found = true;
-						break;
+			if (map._permission === 'edit') {
+				if (type === 'unocommand') { // enable all depending on stored commandStates
+					var unoCommand = $(aItem).data('uno');
+					if (self.options.commandStates[unoCommand] === 'disabled') {
+						$(aItem).addClass('disabled');
+					} else {
+						$(aItem).removeClass('disabled');
+					}
+				} else if (type === 'action') { // enable all except fullscreen on windows
+					if (id === 'fullscreen' && (msie > 0 || trident > 0 || edge > 0)) { // Full screen works weirdly on IE 11 and on Edge
+						$(aItem).addClass('disabled');
+						var index = self.options.allowedViewModeActions.indexOf('fullscreen');
+						if (index > 0) {
+							self.options.allowedViewModeActions.splice(index, 1);
+						}
+					} else {
+						$(aItem).removeClass('disabled');
 					}
 				}
-				if (!found) {
-					$(aItem).addClass('disabled');
-				} else {
-					$(aItem).removeClass('disabled');
-				}
-
-				return;
-			}
-
-			if (type === 'unocommand') {
-				var unoCommand = $(aItem).data('uno');
-				if (self.options.commandStates[unoCommand] === 'disabled') {
+			} else { // eslint-disable-next-line no-lonely-if
+				if (type === 'unocommand') { // disable all uno commands
 					$(aItem).addClass('disabled');
-				} else if (self.options.commandStates[unoCommand] === 'enabled') {
-					$(aItem).removeClass('disabled');
+				} else if (type === 'action') { // disable all except allowedViewModeActions
+					var found = false;
+					for (var i in self.options.allowedViewModeActions) {
+						if (self.options.allowedViewModeActions[i] === id) {
+							found = true;
+							break;
+						}
+					}
+					if (!found) {
+						$(aItem).addClass('disabled');
+					} else {
+						$(aItem).removeClass('disabled');
+					}
 				}
 			}
 		});
commit e0f7c937d07313114f0bf667981127481ca074e3
Author: Pranav Kant <pranavk at collabora.co.uk>
Date:   Fri Jun 24 23:57:27 2016 +0530

    Use new event doclayerinit in menubar init for menubar
    
    This event was introduced in
    c39045b1e4ece3eabbf9a9dbf24d8d4df7651e87
    
    Change-Id: Icacb6584ac9e3ab7aaaef55c2c7f7cf2ea2393a7
    (cherry picked from commit f0812c14f01349d0d626eae77a14ed848f5cd2a8)

diff --git a/loleaflet/src/control/Control.Menubar.js b/loleaflet/src/control/Control.Menubar.js
index 1ca253f..709a6bb 100644
--- a/loleaflet/src/control/Control.Menubar.js
+++ b/loleaflet/src/control/Control.Menubar.js
@@ -153,7 +153,7 @@ L.Control.Menubar = L.Control.extend({
 		this._menubarCont = L.DomUtil.create('ul', 'sm sm-simple', docContainer.parentElement);
 		this._menubarCont.id = 'main-menu';
 
-		map.on('updatepermission', this._onUpdatePermission, this);
+		map.on('doclayerinit', this._onDocLayerInit, this);
 		map.on('commandstatechanged', this._onCommandStateChanged, this);
 	},
 
@@ -165,12 +165,8 @@ L.Control.Menubar = L.Control.extend({
 		}
 	},
 
-	_onUpdatePermission: function() {
-		if (this._initialized || !this._menubarCont) {
-			return;
-		}
-
-		// Add dcoument specific menu
+	_onDocLayerInit: function() {
+		// Add document specific menu
 		var docType = this._map.getDocType();
 		if (docType === 'text') {
 			this._initializeMenu(this.options.text);
@@ -193,11 +189,12 @@ L.Control.Menubar = L.Control.extend({
 			subIndicatorsText: '›'
 		});
 		$('#main-menu').attr('tabindex', 0);
-		this._initialized = true;
 
 		$('#main-menu').bind('select.smapi', {self: this}, this._onItemSelected);
 		$('#main-menu').bind('beforeshow.smapi', {self: this}, this._beforeShow);
 		$('#main-menu').bind('click.smapi', {self: this}, this._onClicked);
+
+		this._initialized = true;
 	},
 
 	_onClicked: function(e, menu) {
commit 3093c5ded0b0cb72de383294c36a8aefbb98fb4a
Author: Pranav Kant <pranavk at collabora.co.uk>
Date:   Fri Jun 24 23:47:05 2016 +0530

    loleaflet: Ask my host to show revision-history
    
    Change-Id: If1ed5fc03c6504e22c565b0278983bb168bb6fc8
    (cherry picked from commit 8e023584ea33b764279b593fb8a593d617c8fd7c)

diff --git a/loleaflet/src/control/Control.Menubar.js b/loleaflet/src/control/Control.Menubar.js
index b706a7d..1ca253f 100644
--- a/loleaflet/src/control/Control.Menubar.js
+++ b/loleaflet/src/control/Control.Menubar.js
@@ -8,8 +8,9 @@ L.Control.Menubar = L.Control.extend({
 	options: {
 		text:  [
 			{name: _('File'), type: 'menu', menu: [{name: _('Save'), type: 'unocommand', uno: '.uno:Save'},
-												{name: _('Print'), id: 'print', type: 'action'},
-												{name: _('Download as'), type: 'menu', menu: [{name: _('PDF Document (.pdf)'), id: 'downloadas-pdf', type: 'action'},
+												   {name: _('Print'), id: 'print', type: 'action'},
+												   {name: _('See revision history'), id: 'rev-history', type: 'action'},
+												   {name: _('Download as'), type: 'menu', menu: [{name: _('PDF Document (.pdf)'), id: 'downloadas-pdf', type: 'action'},
 																						   {name: _('ODF text document (.odt)'), id: 'downloadas-odt', type: 'action'},
 																						   {name: _('Microsoft Word 2003 (.doc)'), id: 'downloadas-doc', type: 'action'},
 																						   {name: _('Microsoft Word (.docx)'), id: 'downloadas-docx', type: 'action'}]}]
@@ -53,8 +54,9 @@ L.Control.Menubar = L.Control.extend({
 
 		presentation: [
 			{name: _('File'), type: 'menu', menu: [{name: _('Save'), type: 'unocommand', uno: '.uno:Save'},
-												{name: _('Print'), id: 'print', type: 'action'},
-												{name: _('Download as'), type: 'menu', menu:  [{name: _('PDF Document (.pdf)'), id: 'downloadas-pdf', type: 'action'},
+												   {name: _('Print'), id: 'print', type: 'action'},
+												   {name: _('See revision history'), id: 'rev-history', type: 'action'},
+												   {name: _('Download as'), type: 'menu', menu:	 [{name: _('PDF Document (.pdf)'), id: 'downloadas-pdf', type: 'action'},
 																							{name: _('ODF presentation (.odp)'), id: 'downloadas-odp', type: 'action'},
 																							{name: _('Microsoft Powerpoint 2003 (.ppt)'), id: 'downloadas-ppt', type: 'action'},
 																							{name: _('Microsoft Powerpoint (.pptx)'), id: 'downloadas-pptx', type: 'action'}]}]
@@ -98,8 +100,9 @@ L.Control.Menubar = L.Control.extend({
 
 		spreadsheet: [
 			{name: _('File'), type: 'menu', menu: [{name: _('Save'), type: 'unocommand', uno: '.uno:Save'},
-												{name: _('Print'), id: 'print', type: 'action'},
-												{name: _('Download as'), type: 'menu', menu: [{name: _('PDF Document (.pdf)'), id: 'downloadas-pdf', type: 'action'},
+												   {name: _('Print'), id: 'print', type: 'action'},
+												   {name: _('See revision history'), id: 'rev-history', type: 'action'},
+												   {name: _('Download as'), type: 'menu', menu: [{name: _('PDF Document (.pdf)'), id: 'downloadas-pdf', type: 'action'},
 																						   {name: _('ODF spreadsheet (.ods)'), id: 'downloadas-ods', type: 'action'},
 																						   {name: _('Microsoft Excel 2003 (.xls)'), id: 'downloadas-xls', type: 'action'},
 																						   {name: _('Microsoft Excel (.xlsx)'), id: 'downloadas-xlsx', type: 'action'}]}]
@@ -305,6 +308,12 @@ L.Control.Menubar = L.Control.extend({
 			map.showLOAboutDialog();
 		} else if (id === 'keyboard-shortcuts') {
 			map.showLOKeyboardHelp();
+		} else if (id === 'rev-history') {
+			// if we are being loaded inside an iframe, ask
+			// our host to show revision history mode
+			if (window.top !== window.self) {
+				window.parent.postMessage('rev-history', '*');
+			}
 		}
 	},
 
commit ae508435d07c33364796a0b3a48fe1c9adaefb09
Author: Pranav Kant <pranavk at collabora.co.uk>
Date:   Fri Jun 24 22:03:47 2016 +0530

    loleaflet: Resurrect loleaflet permission model for readonly mode
    
    Remove direct usage of editlock; instead change loleaflet
    permission from view to edit when editlock message is received.
    By default, map would be in 'view' mode and only get to 'edit'
    when server asks it to switch to.
    
    Use a new event 'doclayerinit' for actions that are directly
    dependent on intialization of doclayer.
    
    Change-Id: Iaceb95ad85721ddcd675c75cfeb1504ab2759ad4
    (cherry picked from commit 454999fa57b786c889159c75731e9073b9ba9f9a)

diff --git a/loleaflet/dist/loleaflet.html b/loleaflet/dist/loleaflet.html
index d66e7df..4610a6b 100644
--- a/loleaflet/dist/loleaflet.html
+++ b/loleaflet/dist/loleaflet.html
@@ -103,7 +103,7 @@
     }
 
     var host = '%HOST%';
-    var permission = getParameterByName('permission') || 'edit';
+    var permission = getParameterByName('permission');
     var timestamp = getParameterByName('timestamp');
     <!-- Shows close button if non-zero value provided -->
     var closebutton = getParameterByName('closebutton');
diff --git a/loleaflet/dist/toolbar/toolbar.js b/loleaflet/dist/toolbar/toolbar.js
index 1ae7b40..5d6629f 100644
--- a/loleaflet/dist/toolbar/toolbar.js
+++ b/loleaflet/dist/toolbar/toolbar.js
@@ -623,7 +623,7 @@ function onFormulaBarBlur() {
 	}, 250);
 }
 
-map.on('updatepermission', function () {
+map.on('doclayerinit', function () {
 	var toolbar = w2ui['toolbar-up'];
 	var docType = map.getDocType();
 	if (docType !== 'text') {
@@ -784,7 +784,7 @@ map.on('commandstatechanged', function (e) {
 
 		// Change the toolbar button state immediately
 		// if we already have the editlock
-		if (map._editlock && (state === 'enabled' || state === 'disabled')) {
+		if (map._permission === 'edit' && (state === 'enabled' || state === 'disabled')) {
 			// in case some buttons are in toolbar-up-more, find
 			// them and en/dis-able them.
 			if (formatButtons[id]) {
@@ -980,13 +980,13 @@ map.on('hyperlinkclicked', function (e) {
 	window.open(e.url, '_blank');
 });
 
-map.on('editlock', function (e) {
+map.on('updatepermission', function (e) {
 	var toolbar = w2ui['toolbar-down'];
-	if (e.value) {
+	if (e.perm === 'edit') {
 		toolbar.disable('takeedit');
 		toolbar.set('takeedit', {hint: _('You are editing (others can only view)'), caption: _('EDITING')});
 	}
-	else {
+	else if (e.perm === 'view') {
 		toolbar.enable('takeedit');
 		toolbar.set('takeedit', {hint: _('Take edit lock (others can only view)'), caption: _('VIEWING')});
 		$('#tb_toolbar-down_item_takeedit')
@@ -1002,12 +1002,16 @@ map.on('editlock', function (e) {
 			takeEditPopupTimeout = null;
 		}, 3000);
 	}
+	else if (e.perm === 'readonly') {
+		toolbar.disable('takeedit');
+		toolbar.set('takeedit', {hint: _('You are locked in readonly mode'), caption: _('READONLY')});
+	}
 
 	toolbar = w2ui['toolbar-up'];
 	var toolbarUpMore = w2ui['toolbar-up-more'];
 	// {En,Dis}able toolbar buttons
 	for (var id in formatButtons) {
-		if (e.value && formatButtons[id]) {
+		if (e.perm === 'edit' && formatButtons[id]) {
 			// restore the state from stored object (formatButtons)
 			toolbar.enable(id);
 			// some might be hidden in toolbar-up-more
@@ -1022,7 +1026,7 @@ map.on('editlock', function (e) {
 	var formulaBarButtons = ['sum', 'function'];
 	var presentationButtons = ['insertpage', 'duplicatepage', 'deletepage'];
 	var toolbarDownButtons = ['next', 'prev'];
-	if (e.value) {
+	if (e.perm === 'edit') {
 		// Enable list boxes
 		$('.styles-select').prop('disabled', false);
 		$('.fonts-select').prop('disabled', false);
@@ -1081,11 +1085,10 @@ map.on('editlock', function (e) {
 		});
 		$('#search-input').prop('disabled', true);
 	}
-
 });
 
 map.on('mouseup keypress', function() {
-	if (!map._editlock) {
+	if (map._permission === 'view') {
 		$('#tb_toolbar-down_item_takeedit')
 			.w2overlay({
 				html: takeEditPopupMessage,
diff --git a/loleaflet/src/control/Control.ColumnHeader.js b/loleaflet/src/control/Control.ColumnHeader.js
index 21edd57..a5cfcdc 100644
--- a/loleaflet/src/control/Control.ColumnHeader.js
+++ b/loleaflet/src/control/Control.ColumnHeader.js
@@ -15,7 +15,6 @@ L.Control.ColumnHeader = L.Control.extend({
 		this._map.on('updatescrolloffset', this.setScrollPosition, this);
 		this._map.on('updateviewport', this.setViewPort, this);
 		this._map.on('viewrowcolumnheaders', this.viewRowColumnHeaders, this);
-		this._map.on('editlock', this._onEditLock, this);
 		var docContainer = this._map.options.documentContainer;
 		var cornerHeader = L.DomUtil.create('div', 'spreadsheet-header-corner', docContainer.parentElement);
 		L.DomEvent.addListener(cornerHeader, 'click', this._onCornerHeaderClick, this);
@@ -50,18 +49,6 @@ L.Control.ColumnHeader = L.Control.extend({
 		});
 	},
 
-	_onEditLock: function(e) {
-		// editlock message is received very early (before DOM setup)
-		// in that case, wait for a second before disabling/enabling the context menu
-		if ($('.spreadsheet-header-column').length === 0) {
-			setTimeout(function() {
-				$('.spreadsheet-header-column').contextMenu(e.value === 1);
-			}, 1000);
-		} else {
-			$('.spreadsheet-header-column').contextMenu(e.value === 1);
-		}
-	},
-
 	insertColumn: function(colAlpha) {
 		// First select the corresponding column because
 		// .uno:InsertColumn doesn't accept any column number
@@ -173,10 +160,17 @@ L.Control.ColumnHeader = L.Control.extend({
 		this._map.sendUnoCommand('.uno:SelectAll');
 	},
 
-	_onUpdatePermission: function () {
-		if (this._map.getDocType() === 'spreadsheet' && !this._initialized) {
+	_onUpdatePermission: function (e) {
+		if (this._map.getDocType() !== 'spreadsheet') {
+			return;
+		}
+
+		if (!this._initialized) {
 			this._initialize();
 		}
+		setTimeout(function() {
+			$('.spreadsheet-header-column').contextMenu(e.perm === 'edit');
+		}, 1000);
 	}
 });
 
diff --git a/loleaflet/src/control/Control.ContextMenu.js b/loleaflet/src/control/Control.ContextMenu.js
index dd84c70..6a4d9b8 100644
--- a/loleaflet/src/control/Control.ContextMenu.js
+++ b/loleaflet/src/control/Control.ContextMenu.js
@@ -60,7 +60,7 @@ L.Control.ContextMenu = L.Control.extend({
 	},
 
 	_onContextMenu: function(obj) {
-		if (!map._editlock) {
+		if (map._permission !== 'edit') {
 			return;
 		}
 
diff --git a/loleaflet/src/control/Control.Menubar.js b/loleaflet/src/control/Control.Menubar.js
index 49a28aa..b706a7d 100644
--- a/loleaflet/src/control/Control.Menubar.js
+++ b/loleaflet/src/control/Control.Menubar.js
@@ -221,7 +221,7 @@ L.Control.Menubar = L.Control.extend({
 					self.options.allowedViewModeActions.splice(index, 1);
 				}
 			}
-			if (!map._editlock) {
+			if (map._permission !== 'edit') {
 				var found = false;
 				for (var i in self.options.allowedViewModeActions) {
 					if (self.options.allowedViewModeActions[i] === id) {
diff --git a/loleaflet/src/control/Control.PartsPreview.js b/loleaflet/src/control/Control.PartsPreview.js
index 092bf6e..14d41dc 100644
--- a/loleaflet/src/control/Control.PartsPreview.js
+++ b/loleaflet/src/control/Control.PartsPreview.js
@@ -78,7 +78,7 @@ L.Control.PartsPreview = L.Control.extend({
 	},
 
 	_setPart: function (e) {
-		if (!map._editlock) {
+		if (map._permission !== 'edit') {
 			return;
 		}
 		var part = $('.parts-preview .mCSB_container .preview-frame').index(e.target.parentNode);
diff --git a/loleaflet/src/control/Control.RowHeader.js b/loleaflet/src/control/Control.RowHeader.js
index 67cea77..11cf0da 100644
--- a/loleaflet/src/control/Control.RowHeader.js
+++ b/loleaflet/src/control/Control.RowHeader.js
@@ -15,7 +15,6 @@ L.Control.RowHeader = L.Control.extend({
 		this._map.on('updatescrolloffset', this.setScrollPosition, this);
 		this._map.on('updateviewport', this.setViewPort, this);
 		this._map.on('viewrowcolumnheaders', this.viewRowColumnHeaders, this);
-		this._map.on('editlock', this._onEditLock, this);
 		var docContainer = this._map.options.documentContainer;
 		var headersContainer = L.DomUtil.create('div', 'spreadsheet-header-rows-container', docContainer.parentElement);
 		this._rows = L.DomUtil.create('div', 'spreadsheet-header-rows', headersContainer);
@@ -48,18 +47,6 @@ L.Control.RowHeader = L.Control.extend({
 		});
 	},
 
-	_onEditLock: function(e) {
-		// editlock message is received very early (before DOM setup)
-		// in that case, wait for a second before disabling/enabling the context menu
-		if ($('.spreadsheet-header-row').length === 0) {
-			setTimeout(function() {
-				$('.spreadsheet-header-row').contextMenu(e.value === 1);
-			}, 1000);
-		} else {
-			$('.spreadsheet-header-row').contextMenu(e.value === 1);
-		}
-	},
-
 	insertRow: function(row) {
 		// First select the corresponding row because
 		// .uno:InsertRows doesn't accept any row number
@@ -153,10 +140,17 @@ L.Control.RowHeader = L.Control.extend({
 		this._selectRow(row, modifier);
 	},
 
-	_onUpdatePermission: function () {
-		if (this._map.getDocType() === 'spreadsheet' && !this._initialized) {
+	_onUpdatePermission: function (e) {
+		if (this._map.getDocType() !== 'spreadsheet') {
+			return;
+		}
+
+		if (!this._initialized) {
 			this._initialize();
 		}
+		setTimeout(function() {
+			$('.spreadsheet-header-row').contextMenu(e.perm === 'edit');
+		}, 1000);
 	}
 });
 
diff --git a/loleaflet/src/control/Control.Tabs.js b/loleaflet/src/control/Control.Tabs.js
index a7895f7..7e4bd46 100644
--- a/loleaflet/src/control/Control.Tabs.js
+++ b/loleaflet/src/control/Control.Tabs.js
@@ -9,10 +9,17 @@ L.Control.Tabs = L.Control.extend({
 		this._initalized = false;
 	},
 
-	_onUpdatePermission: function() {
-		if (this._map.getDocType() === 'spreadsheet' && !this._initialized) {
+	_onUpdatePermission: function(e) {
+		if (this._map.getDocType() !== 'spreadsheet') {
+			return;
+		}
+
+		if (!this._initialized) {
 			this._initialize();
 		}
+		setTimeout(function() {
+			$('.spreadsheet-context-menu').contextMenu(e.perm === 'edit');
+		}, 1000);
 	},
 
 	_initialize: function () {
@@ -67,15 +74,6 @@ L.Control.Tabs = L.Control.extend({
 		});
 
 		map.on('updateparts', this._updateDisabled, this);
-		map.on('editlock', this._enableTabsContextMenu, this);
-	},
-
-	_enableTabsContextMenu: function(e) {
-		if (!e.value) {
-			$('.spreadsheet-context-menu').contextMenu(false);
-		} else {
-			$('.spreadsheet-context-menu').contextMenu(true);
-		}
 	},
 
 	_updateDisabled: function (e) {
@@ -125,7 +123,7 @@ L.Control.Tabs = L.Control.extend({
 					L.DomUtil.addClass(this._spreadsheetTabs[key], 'spreadsheet-context-menu-selected');
 				}
 
-				if (map._editlock) {
+				if (map._permission === 'edit') {
 					L.DomUtil.removeClass(this._spreadsheetTabs[key], 'context-menu-disabled');
 				} else {
 					L.DomUtil.addClass(this._spreadsheetTabs[key], 'context-menu-disabled');
@@ -135,7 +133,7 @@ L.Control.Tabs = L.Control.extend({
 	},
 
 	_setPart: function (e) {
-		if (!map._editlock) {
+		if (map._permission !== 'edit') {
 			return;
 		}
 		var part =  e.target.id.match(/\d+/g)[0];
diff --git a/loleaflet/src/core/Socket.js b/loleaflet/src/core/Socket.js
index 8ca6002..7cb235a 100644
--- a/loleaflet/src/core/Socket.js
+++ b/loleaflet/src/core/Socket.js
@@ -262,7 +262,7 @@ L.Socket = L.Class.extend({
 
 			this._map._docLayer = docLayer;
 			this._map.addLayer(docLayer);
-			this._map._fireInitComplete('docLayer');
+			this._map.fire('doclayerinit');
 		}
 
 		// these can arrive very early during the startup
diff --git a/loleaflet/src/layer/tile/TileLayer.js b/loleaflet/src/layer/tile/TileLayer.js
index 81d5553..e14fe25 100644
--- a/loleaflet/src/layer/tile/TileLayer.js
+++ b/loleaflet/src/layer/tile/TileLayer.js
@@ -174,11 +174,18 @@ L.TileLayer = L.GridLayer.extend({
 			},
 		this);
 
-		map.on('editlock', function(e) {
+		map.on('updatepermission', function(e) {
 			// {En,Dis}able selection handles
 			for (var key in this._selectionHandles) {
-				this._selectionHandles[key].setDraggable(e.value);
+				this._selectionHandles[key].setDraggable(e.perm === 'edit');
 			}
+
+			// we want graphic selection handles to appear
+			// when in editmode, and dissappear when in view mode
+			if (e.perm !== 'edit') {
+				this._graphicSelection = null;
+			}
+			this._onUpdateGraphicSelection();
 		}, this);
 
 		for (var key in this._selectionHandles) {
@@ -186,14 +193,8 @@ L.TileLayer = L.GridLayer.extend({
 		}
 		this._textArea = map._textArea;
 		this._textArea.focus();
-		if (this.options.permission === 'edit' ||
-				this.options.permission === 'view' ||
-				this.options.permission === 'readonly') {
-			map.setPermission(this.options.permission);
-		}
-		else {
-			map.setPermission(this.options.defaultPermission);
-		}
+
+		map.setPermission(this.options.permission);
 
 		map.fire('statusindicator', {statusType: 'loleafletloaded'});
 	},
@@ -697,7 +698,7 @@ L.TileLayer = L.GridLayer.extend({
 
 	_onTextSelectionEndMsg: function (textMsg) {
 		var strTwips = textMsg.match(/\d+/g);
-		if (strTwips != null && this._map._editlock) {
+		if (strTwips != null && this._map._permission === 'edit') {
 			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);
@@ -712,7 +713,7 @@ L.TileLayer = L.GridLayer.extend({
 
 	_onTextSelectionStartMsg: function (textMsg) {
 		var strTwips = textMsg.match(/\d+/g);
-		if (strTwips != null && this._map._editlock) {
+		if (strTwips != null && this._map._permission === 'edit') {
 			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);
@@ -774,7 +775,7 @@ L.TileLayer = L.GridLayer.extend({
 	},
 
 	_mapOnError: function (e) {
-		if (e.msg) {
+		if (e.msg && this._map._permission === 'edit') {
 			this._map.setPermission('view');
 		}
 	},
@@ -961,7 +962,7 @@ L.TileLayer = L.GridLayer.extend({
 				this._map.removeLayer(this._graphicMarker);
 			}
 
-			if (!this._map._editlock) {
+			if (this._map._permission !== 'edit') {
 				return;
 			}
 
@@ -1274,17 +1275,15 @@ L.TileLayer = L.GridLayer.extend({
 	},
 
 	_onEditLock: function (textMsg) {
-		var val = parseInt(textMsg.split(' ')[1]);
-		if (!isNaN(val) && val !== this._map._editlock) {
-			this._map._editlock = val;
-			this._map.fire('editlock', {value: val});
-
-			// we want graphic selection handles to appear ...
-			// when editlock is taken, and dissappear when it is taken away
-			if (!val) {
-				this._graphicSelection = null;
-			}
-			this._onUpdateGraphicSelection();
+		// if we have explicitly set this as readonly,
+		// then never listen server for editlock
+		if (this._map._permission === 'readonly') {
+			return;
+		}
+
+		var perm = parseInt(textMsg.split(' ')[1]) === 1 ? 'edit' : 'view';
+		if (perm !== this._map._permission) {
+			this._map.setPermission(perm);
 		}
 	},
 
diff --git a/loleaflet/src/map/Map.js b/loleaflet/src/map/Map.js
index 6deef34..3cbbf59 100644
--- a/loleaflet/src/map/Map.js
+++ b/loleaflet/src/map/Map.js
@@ -83,7 +83,7 @@ L.Map = L.Evented.extend({
 
 		// When all these conditions are met, fire statusindicator:initializationcomplete
 		this.initConditions = {
-			'docLayer': false,
+			'doclayerinit': false,
 			'statusindicatorfinish': false,
 			'StyleApply': false,
 			'CharFontName': false,
@@ -92,10 +92,14 @@ L.Map = L.Evented.extend({
 		this.initComplete = false;
 
 		this.on('updatepermission', function() {
-			if (this.initComplete) {
-				return;
+			if (!this.initComplete) {
+				this._fireInitComplete('updatepermission');
+			}
+		});
+		this.on('doclayerinit', function() {
+			if (!this.initComplete) {
+				this._fireInitComplete('doclayerinit');
 			}
-			this._fireInitComplete('updatepermission');
 		});
 		this.on('updatetoolbarcommandvalues', function(e) {
 			if (this.initComplete) {
@@ -109,11 +113,6 @@ L.Map = L.Evented.extend({
 			}
 		});
 
-		// when editing, we need the LOK session right away
-		if (options.permission === 'edit') {
-			this.setPermission(options.permission);
-		}
-
 		this.showBusy(_('Initializing...'), false);
 		this.on('statusindicator', this._onUpdateProgress, this);
 	},
diff --git a/loleaflet/src/map/handler/Map.Mouse.js b/loleaflet/src/map/handler/Map.Mouse.js
index 9a19cdc..b5861ff 100644
--- a/loleaflet/src/map/handler/Map.Mouse.js
+++ b/loleaflet/src/map/handler/Map.Mouse.js
@@ -146,13 +146,6 @@ L.Map.Mouse = L.Handler.extend({
 				}
 				this._mouseEventsQueue.push(L.bind(function() {
 					var docLayer = this._map._docLayer;
-					// if it's a click or mouseup after selecting
-					if (this._mouseEventsQueue.length > 1) {
-						// it's a click
-						if (this._map._permission === 'view') {
-							docLayer._map.setPermission('edit');
-						}
-					}
 					this._mouseEventsQueue = [];
 					docLayer._postMouseEvent('buttonup', mousePos.x, mousePos.y, 1, buttons, modifier);
 					docLayer._textArea.focus();


More information about the Libreoffice-commits mailing list