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

Marco Cecchetti (via logerrit) logerrit at kemper.freedesktop.org
Tue Aug 20 15:31:21 UTC 2019


 loleaflet/src/map/handler/Map.TouchGesture.js |   20 +++++++++++++++++---
 1 file changed, 17 insertions(+), 3 deletions(-)

New commits:
commit 93992872e18d4043075d2d01d2ba8e74dcb5e38d
Author:     Marco Cecchetti <mrcekets at gmail.com>
AuthorDate: Mon Jul 1 20:07:54 2019 +0200
Commit:     Henry Castro <hcastro at collabora.com>
CommitDate: Tue Aug 20 17:31:02 2019 +0200

    loleaflet: pinch + pan issue: move in the opposite direction
    
    When the user pans with 2 fingers the document is moved in the
    opposite direction. So we store the initial center point and invert
    the offset to achieve the correct behavior.
    
    Change-Id: Ief63aa39f56c3b812a90b392ddedc4ba21d813e4
    Reviewed-on: https://gerrit.libreoffice.org/77846
    Reviewed-by: Henry Castro <hcastro at collabora.com>
    Tested-by: Henry Castro <hcastro at collabora.com>

diff --git a/loleaflet/src/map/handler/Map.TouchGesture.js b/loleaflet/src/map/handler/Map.TouchGesture.js
index 01b564ddc..3171e2794 100644
--- a/loleaflet/src/map/handler/Map.TouchGesture.js
+++ b/loleaflet/src/map/handler/Map.TouchGesture.js
@@ -84,7 +84,8 @@ L.Map.TouchGesture = L.Handler.extend({
 		this._hammer.on('panstart', L.bind(this._onPanStart, this));
 		this._hammer.on('pan', L.bind(this._onPan, this));
 		this._hammer.on('panend', L.bind(this._onPanEnd, this));
-		this._hammer.on('pinchstart pinchmove', L.bind(this._onPinch, this));
+		this._hammer.on('pinchstart', L.bind(this._onPinchStart, this));
+		this._hammer.on('pinchmove', L.bind(this._onPinch, this));
 		this._hammer.on('pinchend', L.bind(this._onPinchEnd, this));
 		this._hammer.on('tripletap', L.bind(this._onTripleTap, this));
 		if (window.ThisIsTheiOSApp)
@@ -99,7 +100,8 @@ L.Map.TouchGesture = L.Handler.extend({
 		this._hammer.off('panstart', L.bind(this._onPanStart, this));
 		this._hammer.off('pan', L.bind(this._onPan, this));
 		this._hammer.off('panend', L.bind(this._onPanEnd, this));
-		this._hammer.off('pinchstart pinchmove', L.bind(this._onPinch, this));
+		this._hammer.off('pinchstart', L.bind(this._onPinchStart, this));
+		this._hammer.off('pinchmove', L.bind(this._onPinch, this));
 		this._hammer.off('pinchend', L.bind(this._onPinchEnd, this));
 		this._hammer.off('doubletap', L.bind(this._onDoubleTap, this));
 		this._hammer.off('tripletap', L.bind(this._onTripleTap, this));
@@ -325,9 +327,21 @@ L.Map.TouchGesture = L.Handler.extend({
 		}
 	},
 
+	_onPinchStart: function (e) {
+		if (this._map.getDocType() !== 'spreadsheet') {
+			this._pinchStartCenter = {x: e.center.x, y: e.center.y};
+		}
+	},
+
 	_onPinch: function (e) {
+		if (!this._pinchStartCenter)
+			return;
+
 		if (this._map.getDocType() !== 'spreadsheet') {
-			this._center = this._map.mouseEventToLatLng({clientX: e.center.x, clientY: e.center.y});
+			// we need to invert the offset or the map is moved in the opposite direction
+			var offset = {x: e.center.x - this._pinchStartCenter.x, y: e.center.y - this._pinchStartCenter.y};
+			var center = {x: this._pinchStartCenter.x - offset.x, y: this._pinchStartCenter.y - offset.y};
+			this._center = this._map.mouseEventToLatLng({clientX: center.x, clientY: center.y});
 			this._zoom = this._map.getScaleZoom(e.scale);
 
 			L.Util.cancelAnimFrame(this._animRequest);


More information about the Libreoffice-commits mailing list