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

Tomaž Vajngerl (via logerrit) logerrit at kemper.freedesktop.org
Mon Jun 17 10:20:15 UTC 2019


 loleaflet/src/control/Control.LokDialog.js |   53 ++++++++++++++++++++---------
 1 file changed, 37 insertions(+), 16 deletions(-)

New commits:
commit fc8ab3fe7ed3d8d79d851720f677be93658ded53
Author:     Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
AuthorDate: Sat Jun 15 16:17:43 2019 +0900
Commit:     Tomaž Vajngerl <quikee at gmail.com>
CommitDate: Mon Jun 17 12:19:58 2019 +0200

    tdf#124907 enable pan gesture for the dialogs
    
    Also move panning the dialog to 2 finger pan, so that 1 finger
    pan can send pan gesture event to the core.
    
    Change-Id: I72e204d31ae12932bc18f63380475e45f0ccc065
    Reviewed-on: https://gerrit.libreoffice.org/74088
    Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>
    Tested-by: Tomaž Vajngerl <quikee at gmail.com>

diff --git a/loleaflet/src/control/Control.LokDialog.js b/loleaflet/src/control/Control.LokDialog.js
index b2502d175..c2203d955 100644
--- a/loleaflet/src/control/Control.LokDialog.js
+++ b/loleaflet/src/control/Control.LokDialog.js
@@ -53,27 +53,44 @@ L.Control.LokDialog = L.Control.extend({
 
 	dialogIdPrefix: 'lokdialog-',
 
-	onPan: function (ev) {
+	onPan: function (ev, dialogID) {
 		var id = toZoomTargetId(ev.target.id);
 		var target = findZoomTarget(id);
 
 		if (target) {
-			var newX = target.initialState.startX + ev.deltaX;
-			var newY = target.initialState.startY + ev.deltaY;
-
-			// Don't allow to put dialog outside the view
-			if (window.mode.isDesktop() &&
-				(newX < -target.width/2 || newY < -target.height/2
-				|| newX > window.innerWidth - target.width/2
-				|| newY > window.innerHeight - target.height/2))
-				return;
+			if (ev.pointers.length == 1) {
+				if (ev.type == 'panstart') {
+					firstTouchPositionX = ev.pointers[0].offsetX;
+					firstTouchPositionY = ev.pointers[0].offsetY;
+					this._postWindowGestureEvent(dialogID, 'panBegin', firstTouchPositionX, firstTouchPositionY, ev.deltaY);
+				}
+				else if (ev.type == 'panstop') {
+					this._postWindowGestureEvent(dialogID, 'panEnd', firstTouchPositionX, firstTouchPositionY, ev.deltaY);
+					firstTouchPositionX = null;
+					firstTouchPositionY = null;
+				}
+				else {
+					this._postWindowGestureEvent(dialogID, 'panUpdate', firstTouchPositionX, firstTouchPositionY, ev.deltaY);
+				}
+			}
+			else {
+				var newX = target.initialState.startX + ev.deltaX;
+				var newY = target.initialState.startY + ev.deltaY;
+
+				// Don't allow to put dialog outside the view
+				if (window.mode.isDesktop() &&
+					(newX < -target.width/2 || newY < -target.height/2
+					|| newX > window.innerWidth - target.width/2
+					|| newY > window.innerHeight - target.height/2))
+					return;
 
-			target.transformation.translate = {
-				x: newX,
-				y: newY
-			};
+				target.transformation.translate = {
+					x: newX,
+					y: newY
+				};
 
-			updateTransformation(target);
+				updateTransformation(target);
+			}
 		}
 	},
 
@@ -499,6 +516,8 @@ L.Control.LokDialog = L.Control.extend({
 	},
 
 	_setupGestures: function(id, canvas) {
+		var self = this;
+		var dialogID = id;
 		var targetId = toZoomTargetId(canvas.id);
 		var zoomTarget = $('#' + targetId).parent().get(0);
 
@@ -538,7 +557,9 @@ L.Control.LokDialog = L.Control.extend({
 		hammerAll.add(new Hammer.Pan({ threshold: 0, pointers: 0 }));
 		hammerAll.add(new Hammer.Pinch({ threshold: 0 })).recognizeWith([hammerAll.get('pan')]);
 
-		hammerAll.on('panstart panmove', this.onPan);
+		hammerAll.on('panstart panmove panstop', function(ev) {
+			self.onPan(ev, dialogID);
+		});
 		hammerAll.on('pinchstart pinchmove', this.onPinch);
 		hammerAll.on('hammer.input', function(ev) {
 			if (ev.isFinal) {


More information about the Libreoffice-commits mailing list