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

Tomaž Vajngerl (via logerrit) logerrit at kemper.freedesktop.org
Tue Jun 2 08:33:31 UTC 2020


 loleaflet/src/control/Ruler.js |   91 ++++++++++++++++++++++++++++++++---------
 1 file changed, 72 insertions(+), 19 deletions(-)

New commits:
commit f240d58f3e0a7895f6ea88110c4e0f80fe6a573a
Author:     Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
AuthorDate: Mon Jun 1 23:15:11 2020 +0200
Commit:     Tomaž Vajngerl <quikee at gmail.com>
CommitDate: Tue Jun 2 10:33:13 2020 +0200

    Add "delete tabstop" function to Ruler
    
    Change-Id: I34d381f6d3e12b0444b9c7778ef6b8c87794cbd6
    Reviewed-on: https://gerrit.libreoffice.org/c/online/+/95341
    Tested-by: Tomaž Vajngerl <quikee at gmail.com>
    Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>

diff --git a/loleaflet/src/control/Ruler.js b/loleaflet/src/control/Ruler.js
index a5537055e..f5c3dda4d 100644
--- a/loleaflet/src/control/Ruler.js
+++ b/loleaflet/src/control/Ruler.js
@@ -606,9 +606,30 @@ L.Control.Ruler = L.Control.extend({
 		this._map._socket.sendMessage('uno .uno:RulerChangeState ' + JSON.stringify(unoObj));
 	},
 
+	_getTabStopHit: function(tabstopContainer, pointX) {
+		var tabstop = null;
+		var margin = 10;
+		var tabstopDiffFromCenter = 100000000; // just a big initial condition
+
+		for (var i = 0; i < tabstopContainer.tabStops.length; i++) {
+			var current = tabstopContainer.tabStops[i];
+			var location = current.tabStopLocation;
+			if (pointX >= location.left - margin && pointX <= location.right + margin) {
+				var diff = Math.abs(pointX - location.center);
+				if (diff < tabstopDiffFromCenter) {
+					tabstop = current;
+					tabstopDiffFromCenter = diff;
+				}
+			}
+		}
+		return tabstop;
+	},
 	_initiateTabstopDrag: function(event) {
 		// console.log('===> _initiateTabstopDrag ' + event.type);
 
+		this.currentPositionInTwips = null;
+		this.currentTabStopIndex = null;
+
 		var tabstopContainer = null;
 		var pointX = null;
 
@@ -622,18 +643,37 @@ L.Control.Ruler = L.Control.extend({
 		}
 		tabstopContainer.tabStopMarkerBeingDragged = null;
 
+		// check if we hit any tabstop
+		var tabstop = this._getTabStopHit(tabstopContainer, pointX);
+
 		// Check what to do when a mouse buttons is clicked, ignore touch
 		if (event.type !== 'panstart') {
 			// right-click inside tabstop container
 			if (event.button === 2) {
-				this.currentPositionInTwips = this._map._docLayer._pixelsToTwips({x: pointX, y:0}).x;
+				if (tabstop == null) {
+					this.currentPositionInTwips = this._map._docLayer._pixelsToTwips({x: pointX, y:0}).x;
+				}
+				else {
+					this.currentTabStopIndex = tabstop.tabStopNumber;
+				}
+				var self = this;
 				$.contextMenu({
 					selector: '.loleaflet-ruler-tabstopcontainer',
 					className: 'loleaflet-font',
 					items: {
 						inserttabstop: {
 							name: _('Insert tabstop'),
-							callback: (this._insertTabstop).bind(this)
+							callback: (this._insertTabstop).bind(this),
+							visible: function() {
+								return self.currentPositionInTwips != null;
+							}
+						},
+						removetabstop: {
+							name: _('Delete tabstop'),
+							callback: (this._deleteTabstop).bind(this),
+							visible: function() {
+								return self.currentTabStopIndex != null;
+							}
 						}
 					}
 				});
@@ -646,23 +686,6 @@ L.Control.Ruler = L.Control.extend({
 			}
 		}
 
-		// check if we hit any tabstop
-		var tabstop = null;
-		var margin = 10;
-		var tabstopDiffFromCenter = 100000000; // just a big initial condition
-
-		for (var i = 0; i < tabstopContainer.tabStops.length; i++) {
-			var current = tabstopContainer.tabStops[i];
-			var location = current.tabStopLocation;
-			if (pointX >= location.left - margin && pointX <= location.right + margin) {
-				var diff = Math.abs(pointX - location.center);
-				if (diff < tabstopDiffFromCenter) {
-					tabstop = current;
-					tabstopDiffFromCenter = diff;
-				}
-			}
-		}
-
 		if (tabstop == null) {
 			return;
 		}
@@ -735,6 +758,10 @@ L.Control.Ruler = L.Control.extend({
 				Position: {
 					type : 'int32',
 					value : positionTwip
+				},
+				Remove: {
+					type : 'boolean',
+					value : false
 				}
 			};
 			this._map.sendUnoCommand('.uno:ChangeTabStop', params);
@@ -764,6 +791,27 @@ L.Control.Ruler = L.Control.extend({
 		}
 	},
 
+	_deleteTabstop: function() {
+		if (this.currentTabStopIndex != null) {
+			var params = {
+				Index: {
+					type : 'int32',
+					value : this.currentTabStopIndex
+				},
+				Position: {
+					type : 'int32',
+					value : 0
+				},
+				Remove: {
+					type : 'boolean',
+					value : true
+				}
+			};
+			this._map.sendUnoCommand('.uno:ChangeTabStop', params);
+			this.currentTabStopIndex = null;
+		}
+	},
+
 	_insertTabstop: function() {
 		if (this.currentPositionInTwips != null) {
 			var params = {
@@ -774,9 +822,14 @@ L.Control.Ruler = L.Control.extend({
 				Position: {
 					type : 'int32',
 					value : this.currentPositionInTwips
+				},
+				Remove: {
+					type : 'boolean',
+					value : false
 				}
 			};
 			this._map.sendUnoCommand('.uno:ChangeTabStop', params);
+			this.currentPositionInTwips = null;
 		}
 	},
 


More information about the Libreoffice-commits mailing list