[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