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

Tor Lillqvist (via logerrit) logerrit at kemper.freedesktop.org
Thu Jun 13 11:21:49 UTC 2019


 loleaflet/src/dom/DomEvent.js          |    8 ++++++++
 loleaflet/src/layer/vector/SVGGroup.js |   25 +++++++++++++++++++++++++
 2 files changed, 33 insertions(+)

New commits:
commit 325c341bec6d42ff076c9a3c9ad23c228520a70f
Author:     Tor Lillqvist <tml at collabora.com>
AuthorDate: Thu Mar 28 00:07:15 2019 +0200
Commit:     Andras Timar <andras.timar at collabora.com>
CommitDate: Thu Jun 13 13:21:32 2019 +0200

    tdf#124179: Make it possible to drag an image using a touch gesture
    
    First select the image (so that the circular handles show up), then
    drag it.
    
    Change-Id: Idda55423bd38675841ed2a1ed21143d765b83ed1
    Reviewed-on: https://gerrit.libreoffice.org/73945
    Reviewed-by: Tor Lillqvist <tml at collabora.com>
    Reviewed-by: Andras Timar <andras.timar at collabora.com>
    Tested-by: Andras Timar <andras.timar at collabora.com>

diff --git a/loleaflet/src/dom/DomEvent.js b/loleaflet/src/dom/DomEvent.js
index 67e04c4ce..0d59d54aa 100644
--- a/loleaflet/src/dom/DomEvent.js
+++ b/loleaflet/src/dom/DomEvent.js
@@ -178,6 +178,9 @@ L.DomEvent = {
 
 	getMousePosition: function (e, container) {
 		if (!container) {
+			if (e.clientX === undefined && e.touches !== undefined)
+				return new L.Point(e.touches[0].clientX, e.touches[0].clientY);
+
 			return new L.Point(e.clientX, e.clientY);
 		}
 
@@ -192,6 +195,11 @@ L.DomEvent = {
 			left = top = 0;
 		}
 
+		if (e.clientX === undefined && e.touches !== undefined)
+			return new L.Point(
+				e.touches[0].clientX - left - container.clientLeft,
+				e.touches[0].clientY - top - container.clientTop);
+
 		return new L.Point(
 			e.clientX - left - container.clientLeft,
 			e.clientY - top - container.clientTop);
diff --git a/loleaflet/src/layer/vector/SVGGroup.js b/loleaflet/src/layer/vector/SVGGroup.js
index da8a40079..12c3a2931 100644
--- a/loleaflet/src/layer/vector/SVGGroup.js
+++ b/loleaflet/src/layer/vector/SVGGroup.js
@@ -9,6 +9,11 @@ L.SVGGroup = L.Layer.extend({
 		noClip: true
 	},
 
+	lastTouchEvent: {
+		clientX: 0,
+		clientY: 0
+	},
+
 	initialize: function (bounds, options) {
 		L.setOptions(this, options);
 		this._bounds = bounds;
@@ -47,6 +52,11 @@ L.SVGGroup = L.Layer.extend({
 	},
 
 	_onDragStart: function(evt) {
+		if (evt.type === 'touchstart') {
+			this.lastTouchEvent.clientX = evt.touches[0].clientX;
+			this.lastTouchEvent.clientY = evt.touches[0].clientY;
+		}
+
 		if (!this._dragShape)
 			return;
 		this._moved = false;
@@ -54,6 +64,9 @@ L.SVGGroup = L.Layer.extend({
 		L.DomEvent.on(this._dragShape, 'mousemove', this._onDrag, this);
 		L.DomEvent.on(this._dragShape, 'mouseup', this._onDragEnd, this);
 
+		L.DomEvent.on(this._dragShape, 'touchmove', this._onDrag, this);
+		L.DomEvent.on(this._dragShape, 'touchend', this._onDragEnd, this);
+
 		var data = {
 			originalEvent: evt,
 			containerPoint: this._map.mouseEventToContainerPoint(evt)
@@ -65,6 +78,11 @@ L.SVGGroup = L.Layer.extend({
 	},
 
 	_onDrag: function(evt) {
+		if (evt.type === 'touchmove') {
+			this.lastTouchEvent.clientX = evt.touches[0].clientX;
+			this.lastTouchEvent.clientY = evt.touches[0].clientY;
+		}
+
 		if (!this._dragShape)
 			return;
 
@@ -82,11 +100,17 @@ L.SVGGroup = L.Layer.extend({
 	},
 
 	_onDragEnd: function(evt) {
+		if (evt.type === 'touchend' && evt.touches.length == 0)
+			evt.touches[0] = {clientX: this.lastTouchEvent.clientX, clientY: this.lastTouchEvent.clientY};
+
 		if (!this._dragShape)
 			return;
 		L.DomEvent.off(this._dragShape, 'mousemove', this._onDrag, this);
 		L.DomEvent.off(this._dragShape, 'mouseup', this._onDragEnd, this);
 
+		L.DomEvent.off(this._dragShape, 'touchmove', this._onDrag, this);
+		L.DomEvent.off(this._dragShape, 'touchend', this._onDragEnd, this);
+
 		this._moved = false;
 		this._hideEmbeddedSVG();
 		var pos = this._map.mouseEventToLatLng(evt);
@@ -129,6 +153,7 @@ L.SVGGroup = L.Layer.extend({
 			this._path.appendChild(this._rect._path);
 			this._dragShape = this._rect._path;
 			L.DomEvent.on(this._rect._path, 'mousedown', this._onDragStart, this);
+			L.DomEvent.on(this._rect._path, 'touchstart', this._onDragStart, this);
 		}
 		this._update();
 	},


More information about the Libreoffice-commits mailing list