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

Szymon Kłos (via logerrit) logerrit at kemper.freedesktop.org
Thu Oct 17 20:51:09 UTC 2019


 loleaflet/build/deps.js                       |    4 +
 loleaflet/src/core/Socket.js                  |    2 
 loleaflet/src/layer/ObjectFocusDarkOverlay.js |   57 ++++++++++++++++++++++++++
 loleaflet/src/layer/tile/TileLayer.js         |   18 +++++++-
 loleaflet/src/map/Map.js                      |   21 +++++++++
 5 files changed, 98 insertions(+), 4 deletions(-)

New commits:
commit 17ab9909d67a98457aa7819b6e01f578bbb289b8
Author:     Szymon Kłos <szymon.klos at collabora.com>
AuthorDate: Tue Jul 30 17:13:17 2019 +0200
Commit:     Michael Meeks <michael.meeks at collabora.com>
CommitDate: Thu Oct 17 21:47:32 2019 +0100

    Unify none state for _graphicSelection
    
    Change-Id: I8fb4f7813373b3b56a25040fc5d20e7592c6c92d

diff --git a/loleaflet/src/core/Socket.js b/loleaflet/src/core/Socket.js
index 66c837fdf..fcc62e83b 100644
--- a/loleaflet/src/core/Socket.js
+++ b/loleaflet/src/core/Socket.js
@@ -915,7 +915,7 @@ L.Socket = L.Class.extend({
 		if (this._map._docLayer) {
 			this._map._docLayer.removeAllViews();
 			this._map._docLayer._resetClientVisArea();
-			this._map._docLayer._graphicSelection = null;
+			this._map._docLayer._graphicSelection = new L.LatLngBounds(new L.LatLng(0, 0), new L.LatLng(0, 0));
 			this._map._docLayer._onUpdateGraphicSelection();
 		}
 
diff --git a/loleaflet/src/layer/tile/TileLayer.js b/loleaflet/src/layer/tile/TileLayer.js
index fb0df110d..7587096fb 100644
--- a/loleaflet/src/layer/tile/TileLayer.js
+++ b/loleaflet/src/layer/tile/TileLayer.js
@@ -833,7 +833,7 @@ L.TileLayer = L.GridLayer.extend({
 
 				this._map.addObjectFocusDarkOverlay(xTwips, yTwips, wTwips, hTwips);
 
-				this._graphicSelection = null;
+				this._graphicSelection = new L.LatLngBounds(new L.LatLng(0, 0), new L.LatLng(0, 0));
 				this._onUpdateGraphicSelection();
 			}
 		}
@@ -1819,7 +1819,7 @@ L.TileLayer = L.GridLayer.extend({
 		// hide the selection handles
 		this._onUpdateTextSelection();
 		// hide the graphic selection
-		this._graphicSelection = null;
+		this._graphicSelection = new L.LatLngBounds(new L.LatLng(0, 0), new L.LatLng(0, 0));
 		this._onUpdateGraphicSelection();
 		this._cellCursor = null;
 		this._onUpdateCellCursor();
commit d0474118250684214bf2226d15da5e8dea593d70
Author:     Szymon Kłos <szymon.klos at collabora.com>
AuthorDate: Wed Jun 5 09:28:18 2019 +0200
Commit:     Michael Meeks <michael.meeks at collabora.com>
CommitDate: Thu Oct 17 21:16:53 2019 +0100

    Remove dark overlay after crash or disconnection
    
    Change-Id: Iceab041def6444b76c008a65d7fdeccb61126f84

diff --git a/loleaflet/src/layer/tile/TileLayer.js b/loleaflet/src/layer/tile/TileLayer.js
index 39c2144b0..fb0df110d 100644
--- a/loleaflet/src/layer/tile/TileLayer.js
+++ b/loleaflet/src/layer/tile/TileLayer.js
@@ -822,21 +822,16 @@ L.TileLayer = L.GridLayer.extend({
 			this._resetSelectionRanges();
 		}
 		else if (textMsg.match('INPLACE EXIT')) {
-			if (this._map.focusLayer) {
-				this._map.removeLayer(this._map.focusLayer);
-				this._map.focusLayer = null;
-			}
+			this._map.removeObjectFocusDarkOverlay();
 		}
 		else if (textMsg.match('INPLACE')) {
-			if (!this._map.focusLayer) {
-				this._map.focusLayer = new L.ObjectFocusDarkOverlay().addTo(this._map);
-
+			if (!this._map.hasObjectFocusDarkOverlay()) {
 				var xTwips = this._map._docLayer._latLngToTwips(this._graphicSelection.getNorthWest()).x;
 				var yTwips = this._map._docLayer._latLngToTwips(this._graphicSelection.getNorthWest()).y;
 				var wTwips = this._map._docLayer._latLngToTwips(this._graphicSelection.getSouthEast()).x - xTwips;
 				var hTwips = this._map._docLayer._latLngToTwips(this._graphicSelection.getSouthEast()).y - yTwips;
 
-				this._map.focusLayer.show({x: xTwips, y: yTwips, w: wTwips, h: hTwips});
+				this._map.addObjectFocusDarkOverlay(xTwips, yTwips, wTwips, hTwips);
 
 				this._graphicSelection = null;
 				this._onUpdateGraphicSelection();
diff --git a/loleaflet/src/map/Map.js b/loleaflet/src/map/Map.js
index 628227522..d5feb7c25 100644
--- a/loleaflet/src/map/Map.js
+++ b/loleaflet/src/map/Map.js
@@ -317,6 +317,7 @@ L.Map = L.Evented.extend({
 
 	loadDocument: function(socket) {
 		this._socket.connect(socket);
+		this.removeObjectFocusDarkOverlay();
 	},
 
 	sendInitUNOCommands: function() {
@@ -1731,7 +1732,25 @@ L.Map = L.Evented.extend({
 
 	isRulerVisible: function() {
 		return $('.loleaflet-ruler').is(':visible');
-	}
+	},
+
+	hasObjectFocusDarkOverlay: function() {
+		return !!this.focusLayer;
+	},
+
+	addObjectFocusDarkOverlay: function(xTwips, yTwips, wTwips, hTwips) {
+		if (!this.hasObjectFocusDarkOverlay()) {
+			this.focusLayer = new L.ObjectFocusDarkOverlay().addTo(this);
+			this.focusLayer.show({x: xTwips, y: yTwips, w: wTwips, h: hTwips});
+		}
+	},
+
+	removeObjectFocusDarkOverlay: function() {
+		if (this.hasObjectFocusDarkOverlay()) {
+			this.removeLayer(this.focusLayer);
+			this.focusLayer = null;
+		}
+	},
 });
 
 L.map = function (id, options) {
commit f0921608143f4fdeec2ed49fe2ddce72da3855ed
Author:     Szymon Kłos <szymon.klos at collabora.com>
AuthorDate: Fri May 31 19:23:38 2019 +0200
Commit:     Michael Meeks <michael.meeks at collabora.com>
CommitDate: Thu Oct 17 21:16:53 2019 +0100

    Don't allow to enter incorrect state with dark overlay
    
    Change-Id: Idda18b8ba916bdb421a205290fd4569fb11d203b

diff --git a/loleaflet/src/layer/tile/TileLayer.js b/loleaflet/src/layer/tile/TileLayer.js
index 54f0c231a..39c2144b0 100644
--- a/loleaflet/src/layer/tile/TileLayer.js
+++ b/loleaflet/src/layer/tile/TileLayer.js
@@ -822,7 +822,7 @@ L.TileLayer = L.GridLayer.extend({
 			this._resetSelectionRanges();
 		}
 		else if (textMsg.match('INPLACE EXIT')) {
-			if (this._map.hasLayer(this._map.focusLayer)) {
+			if (this._map.focusLayer) {
 				this._map.removeLayer(this._map.focusLayer);
 				this._map.focusLayer = null;
 			}
@@ -830,17 +830,17 @@ L.TileLayer = L.GridLayer.extend({
 		else if (textMsg.match('INPLACE')) {
 			if (!this._map.focusLayer) {
 				this._map.focusLayer = new L.ObjectFocusDarkOverlay().addTo(this._map);
-			}
 
-			var xTwips = this._map._docLayer._latLngToTwips(this._graphicSelection.getNorthWest()).x;
-			var yTwips = this._map._docLayer._latLngToTwips(this._graphicSelection.getNorthWest()).y;
-			var wTwips = this._map._docLayer._latLngToTwips(this._graphicSelection.getSouthEast()).x - xTwips;
-			var hTwips = this._map._docLayer._latLngToTwips(this._graphicSelection.getSouthEast()).y - yTwips;
+				var xTwips = this._map._docLayer._latLngToTwips(this._graphicSelection.getNorthWest()).x;
+				var yTwips = this._map._docLayer._latLngToTwips(this._graphicSelection.getNorthWest()).y;
+				var wTwips = this._map._docLayer._latLngToTwips(this._graphicSelection.getSouthEast()).x - xTwips;
+				var hTwips = this._map._docLayer._latLngToTwips(this._graphicSelection.getSouthEast()).y - yTwips;
 
-			this._map.focusLayer.show({x: xTwips, y: yTwips, w: wTwips, h: hTwips});
+				this._map.focusLayer.show({x: xTwips, y: yTwips, w: wTwips, h: hTwips});
 
-			this._graphicSelection = null;
-			this._onUpdateGraphicSelection();
+				this._graphicSelection = null;
+				this._onUpdateGraphicSelection();
+			}
 		}
 		else {
 			textMsg = '[' + textMsg.substr('graphicselection:'.length) + ']';
commit d14b7ef8112b0c630e5ed9312be379894221ceb1
Author:     Szymon Kłos <szymon.klos at collabora.com>
AuthorDate: Fri May 31 11:58:48 2019 +0200
Commit:     Michael Meeks <michael.meeks at collabora.com>
CommitDate: Thu Oct 17 21:16:53 2019 +0100

    ObjectFocusDarkOverlay refactoring
    
    Change-Id: Id53c3db15c4be65ca10b6b00dca2638023b7918b

diff --git a/loleaflet/src/layer/ObjectFocusDarkOverlay.js b/loleaflet/src/layer/ObjectFocusDarkOverlay.js
index ad012650b..16e8eddde 100644
--- a/loleaflet/src/layer/ObjectFocusDarkOverlay.js
+++ b/loleaflet/src/layer/ObjectFocusDarkOverlay.js
@@ -5,10 +5,7 @@
 
 L.ObjectFocusDarkOverlay = L.Layer.extend({
 	onAdd: function() {
-	},
-
-	remove: function() {
-	},
+	}
 });
 
 // Libreoffice-specific functionality follows.
@@ -17,14 +14,10 @@ L.ObjectFocusDarkOverlay = L.Layer.extend({
  * A L.ObjectFocusDarkOverlay
  */
 L.ObjectFocusDarkOverlay = L.ObjectFocusDarkOverlay.extend({
-	onAdd: function(map) {
-		map.on('inplace', this._onStateChanged, this);
-	},
-
-	remove: function() {
-		this._map.off('inplace', this._onStateChanged, this);
+	onRemove: function() {
 		this._parts.clearLayers();
 		this._map.removeLayer(this._parts);
+		this._parts = null;
 	},
 
 	// coordinates are in Twips
@@ -47,14 +40,9 @@ L.ObjectFocusDarkOverlay = L.ObjectFocusDarkOverlay.extend({
 		this._parts.addLayer(part);
 	},
 
-	_onStateChanged: function(args) {
-		if (args.off && args.off === true) {
-			this._parts.clearLayers();
-			this._map.removeLayer(this._parts);
-			this._parts = null;
-			return;
-		}
-
+	// args: {x, y, w, h}
+	// defines area where the focused element is placed, values are in Twips
+	show: function(args) {
 		this._parts = new L.LayerGroup();
 		this._map.addLayer(this._parts);
 
diff --git a/loleaflet/src/layer/tile/TileLayer.js b/loleaflet/src/layer/tile/TileLayer.js
index f2976b152..54f0c231a 100644
--- a/loleaflet/src/layer/tile/TileLayer.js
+++ b/loleaflet/src/layer/tile/TileLayer.js
@@ -821,13 +821,24 @@ L.TileLayer = L.GridLayer.extend({
 		if (textMsg.match('EMPTY')) {
 			this._resetSelectionRanges();
 		}
+		else if (textMsg.match('INPLACE EXIT')) {
+			if (this._map.hasLayer(this._map.focusLayer)) {
+				this._map.removeLayer(this._map.focusLayer);
+				this._map.focusLayer = null;
+			}
+		}
 		else if (textMsg.match('INPLACE')) {
+			if (!this._map.focusLayer) {
+				this._map.focusLayer = new L.ObjectFocusDarkOverlay().addTo(this._map);
+			}
+
 			var xTwips = this._map._docLayer._latLngToTwips(this._graphicSelection.getNorthWest()).x;
 			var yTwips = this._map._docLayer._latLngToTwips(this._graphicSelection.getNorthWest()).y;
 			var wTwips = this._map._docLayer._latLngToTwips(this._graphicSelection.getSouthEast()).x - xTwips;
 			var hTwips = this._map._docLayer._latLngToTwips(this._graphicSelection.getSouthEast()).y - yTwips;
 
-			this._map.fire('inplace', {x: xTwips, y: yTwips, w: wTwips, h: hTwips});
+			this._map.focusLayer.show({x: xTwips, y: yTwips, w: wTwips, h: hTwips});
+
 			this._graphicSelection = null;
 			this._onUpdateGraphicSelection();
 		}
commit 8eb003f90fb220ce8b497d6a556d94430e33c6a7
Author:     Szymon Kłos <szymon.klos at collabora.com>
AuthorDate: Tue May 28 16:15:54 2019 +0200
Commit:     Michael Meeks <michael.meeks at collabora.com>
CommitDate: Thu Oct 17 21:16:53 2019 +0100

    Added ObjectFocusDarkOverlay based on L.Polygon
    
    Layer which shows dark overlay around edited chart.
    
    Change-Id: I1fd87f60e7ba58524481598baf5b012f4fb3d96f

diff --git a/loleaflet/build/deps.js b/loleaflet/build/deps.js
index f003f06fe..d9bf83bf2 100644
--- a/loleaflet/build/deps.js
+++ b/loleaflet/build/deps.js
@@ -37,7 +37,9 @@ var deps = {
 
 	TileLayer: {
 		src: ['layer/tile/TileLayer.js',
-			  'layer/tile/TileLayer.TableOverlay.js'],
+		      'layer/tile/TileLayer.TableOverlay.js',
+		      'layer/ObjectFocusDarkOverlay.js'
+		],
 		desc: 'The base class for displaying tile layers on the map.',
 		deps: ['GridLayer']
 	},
diff --git a/loleaflet/src/layer/ObjectFocusDarkOverlay.js b/loleaflet/src/layer/ObjectFocusDarkOverlay.js
new file mode 100644
index 000000000..ad012650b
--- /dev/null
+++ b/loleaflet/src/layer/ObjectFocusDarkOverlay.js
@@ -0,0 +1,69 @@
+/*
+ * A Leaflet layer that shows dark overlay around focused object.
+ *
+ */
+
+L.ObjectFocusDarkOverlay = L.Layer.extend({
+	onAdd: function() {
+	},
+
+	remove: function() {
+	},
+});
+
+// Libreoffice-specific functionality follows.
+
+/*
+ * A L.ObjectFocusDarkOverlay
+ */
+L.ObjectFocusDarkOverlay = L.ObjectFocusDarkOverlay.extend({
+	onAdd: function(map) {
+		map.on('inplace', this._onStateChanged, this);
+	},
+
+	remove: function() {
+		this._map.off('inplace', this._onStateChanged, this);
+		this._parts.clearLayers();
+		this._map.removeLayer(this._parts);
+	},
+
+	// coordinates are in Twips
+	_addPart: function(x, y, w, h) {
+		var rectangles = [];
+		var topLeftTwips = new L.Point(x, y);
+		var topRightTwips = topLeftTwips.add(new L.Point(w, 0));
+		var bottomLeftTwips = topLeftTwips.add(new L.Point(0, h));
+		var bottomRightTwips = topLeftTwips.add(new L.Point(w, h));
+		rectangles.push([bottomLeftTwips, bottomRightTwips, topLeftTwips, topRightTwips]);
+
+		var polygons = L.PolyUtil.rectanglesToPolygons(rectangles, this._map._docLayer);
+		var part = new L.Polygon(polygons, {
+			pointerEvents: 'none',
+			fillColor: 'black',
+			fillOpacity: 0.25,
+			weight: 0,
+			opacity: 0.25});
+
+		this._parts.addLayer(part);
+	},
+
+	_onStateChanged: function(args) {
+		if (args.off && args.off === true) {
+			this._parts.clearLayers();
+			this._map.removeLayer(this._parts);
+			this._parts = null;
+			return;
+		}
+
+		this._parts = new L.LayerGroup();
+		this._map.addLayer(this._parts);
+
+		var fullWidth = 1000000;
+		var fullHeight = 1000000;
+
+		this._addPart(0, 0, fullWidth, args.y);
+		this._addPart(0, args.y, args.x, args.h);
+		this._addPart(args.x + args.w, args.y, fullWidth, args.h);
+		this._addPart(0, (args.y + args.h), fullWidth, fullHeight);
+	}
+});
diff --git a/loleaflet/src/layer/tile/TileLayer.js b/loleaflet/src/layer/tile/TileLayer.js
index 2c5364289..f2976b152 100644
--- a/loleaflet/src/layer/tile/TileLayer.js
+++ b/loleaflet/src/layer/tile/TileLayer.js
@@ -821,6 +821,16 @@ L.TileLayer = L.GridLayer.extend({
 		if (textMsg.match('EMPTY')) {
 			this._resetSelectionRanges();
 		}
+		else if (textMsg.match('INPLACE')) {
+			var xTwips = this._map._docLayer._latLngToTwips(this._graphicSelection.getNorthWest()).x;
+			var yTwips = this._map._docLayer._latLngToTwips(this._graphicSelection.getNorthWest()).y;
+			var wTwips = this._map._docLayer._latLngToTwips(this._graphicSelection.getSouthEast()).x - xTwips;
+			var hTwips = this._map._docLayer._latLngToTwips(this._graphicSelection.getSouthEast()).y - yTwips;
+
+			this._map.fire('inplace', {x: xTwips, y: yTwips, w: wTwips, h: hTwips});
+			this._graphicSelection = null;
+			this._onUpdateGraphicSelection();
+		}
 		else {
 			textMsg = '[' + textMsg.substr('graphicselection:'.length) + ']';
 			var msgData = JSON.parse(textMsg);


More information about the Libreoffice-commits mailing list