loleaflet/src/control/Control.ContextMenu.js | 1 loleaflet/src/control/Control.MobileInput.js | 8 - loleaflet/src/core/Socket.js | 1 loleaflet/src/dom/Draggable.js | 8 - loleaflet/src/layer/marker/ClipboardContainer.js | 6 loleaflet/src/map/Map.js | 33 +++- loleaflet/src/map/handler/Map.BoxZoom.js | 2 loleaflet/src/map/handler/Map.CalcTap.js | 164 ++++++++++++----------- loleaflet/src/map/handler/Map.DoubleClickZoom.js | 2 loleaflet/src/map/handler/Map.Drag.js | 2 loleaflet/src/map/handler/Map.Keyboard.js | 2 loleaflet/src/map/handler/Map.Mouse.js | 2 loleaflet/src/map/handler/Map.Scroll.js | 2 loleaflet/src/map/handler/Map.Tap.js | 4 loleaflet/src/map/handler/Map.TouchZoom.js | 2 15 files changed, 133 insertions(+), 106 deletions(-)
New commits: commit 2a318230e4fb08a72101deb3a4153ca7a88b27b7 Author: Henry Castro <hcas...@collabora.com> AuthorDate: Tue Jun 11 11:59:51 2019 -0400 Commit: Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk> CommitDate: Wed Jul 10 14:18:46 2019 +0900 loleaflet: mobile: create Map.CalcTap handler when initialize L.Map Change-Id: If26278dc655ff4434bce0ca21d4b63623f2cdd17 diff --git a/loleaflet/src/dom/Draggable.js b/loleaflet/src/dom/Draggable.js index 5c6e125fa..0c20f6824 100644 --- a/loleaflet/src/dom/Draggable.js +++ b/loleaflet/src/dom/Draggable.js @@ -28,7 +28,7 @@ L.Draggable = L.Evented.extend({ }, enable: function () { - if (this._enabled) { return; } + if (this._manualDrag || this._enabled) { return; } L.DomEvent.on(this._dragStartTarget, L.Draggable.START.join(' '), this._onDown, this); @@ -36,7 +36,7 @@ L.Draggable = L.Evented.extend({ }, disable: function () { - if (!this._enabled) { return; } + if (this._manualDrag || !this._enabled) { return; } L.DomEvent.off(this._dragStartTarget, L.Draggable.START.join(' '), this._onDown, this); @@ -80,8 +80,8 @@ L.Draggable = L.Evented.extend({ this.startOffset = this._startPoint.subtract(new L.Point(startBoundingRect.left, startBoundingRect.top)); L.DomEvent - .on(document, L.Draggable.MOVE[e.type], this._onMove, this) - .on(document, L.Draggable.END[e.type], this._onUp, this); + .on(document, L.Draggable.MOVE[e.type], this._onMove, this) + .on(document, L.Draggable.END[e.type], this._onUp, this); }, _onMove: function (e) { diff --git a/loleaflet/src/map/Map.js b/loleaflet/src/map/Map.js index c88839020..c23b6b95a 100644 --- a/loleaflet/src/map/Map.js +++ b/loleaflet/src/map/Map.js @@ -109,6 +109,23 @@ L.Map = L.Evented.extend({ this.callInitHooks(); + this.addHandler('keyboard', L.Map.Keyboard); + this.addHandler('dragging', L.Map.Drag); + if (L.Browser.touch && !L.Browser.pointer) { + //this.addHandler('tap', L.Map.Tap); + this.dragging.disable(); + this.options.inertia = false; + this.dragging._draggable._manualDrag = true; + this._mainEvents('off'); + this.addHandler('touchCalc', L.Map.CalcTap); + this.addHandler('touchZoom', L.Map.TouchZoom); + } else { + this.addHandler('mouse', L.Map.Mouse); + this.addHandler('boxZoom', L.Map.BoxZoom); + this.addHandler('scrollHandler', L.Map.Scroll); + this.addHandler('doubleClickZoom', L.Map.DoubleClickZoom); + } + if (this.options.imagePath) { L.Icon.Default.imagePath = this.options.imagePath; } @@ -979,6 +996,11 @@ L.Map = L.Evented.extend({ }, // DOM event handling + _mainEvents: function (onOff) { + L.DomEvent[onOff](this._container, 'click dblclick mousedown mouseup ' + + 'mouseover mouseout mousemove dragover drop ' + + 'trplclick qdrplclick', this._handleDOMEvent, this); + }, _initEvents: function (remove) { if (!L.DomEvent) { return; } @@ -989,9 +1011,7 @@ L.Map = L.Evented.extend({ var onOff = remove ? 'off' : 'on'; - L.DomEvent[onOff](this._container, 'click dblclick mousedown mouseup ' + - 'mouseover mouseout mousemove dragover drop ' + - 'trplclick qdrplclick', this._handleDOMEvent, this); + this._mainEvents(onOff); if (this.options.trackResize && this._resizeDetector.contentWindow) { L.DomEvent[onOff](this._resizeDetector.contentWindow, 'resize', this._onResize, this); diff --git a/loleaflet/src/map/handler/Map.BoxZoom.js b/loleaflet/src/map/handler/Map.BoxZoom.js index 2b84e9f6c..1ebad494c 100644 --- a/loleaflet/src/map/handler/Map.BoxZoom.js +++ b/loleaflet/src/map/handler/Map.BoxZoom.js @@ -97,5 +97,3 @@ L.Map.BoxZoom = L.Handler.extend({ } } }); - -L.Map.addInitHook('addHandler', 'boxZoom', L.Map.BoxZoom); diff --git a/loleaflet/src/map/handler/Map.CalcTap.js b/loleaflet/src/map/handler/Map.CalcTap.js index e10cff5a9..58613175a 100644 --- a/loleaflet/src/map/handler/Map.CalcTap.js +++ b/loleaflet/src/map/handler/Map.CalcTap.js @@ -3,6 +3,10 @@ * L.Map.CalcTap is used to enable mobile taps. */ +L.Map.mergeOptions({ + touchCalc: true, +}); + /* global Hammer $ */ L.Map.CalcTap = L.Handler.extend({ @@ -126,8 +130,8 @@ L.Map.CalcTap = L.Handler.extend({ latlng = this._map.layerPointToLatLng(layerPoint), mousePos = this._map._docLayer._latLngToTwips(latlng); - this._map._docLayer._postMouseEvent('buttondown', mousePos.x, mousePos.y, 1, 1, 0); - this._map._docLayer._postMouseEvent('buttonup', mousePos.x, mousePos.y, 1, 1, 0); + this._map._docLayer._postMouseEvent('buttondown', mousePos.x, mousePos.y, 2, 1, 0); + this._map._docLayer._postMouseEvent('buttonup', mousePos.x, mousePos.y, 2, 1, 0); if (!this._map.hasFocus()) { setTimeout(L.bind(this._map.focus, this._map), 0); diff --git a/loleaflet/src/map/handler/Map.DoubleClickZoom.js b/loleaflet/src/map/handler/Map.DoubleClickZoom.js index 45edf9fdc..6e2717acb 100644 --- a/loleaflet/src/map/handler/Map.DoubleClickZoom.js +++ b/loleaflet/src/map/handler/Map.DoubleClickZoom.js @@ -28,5 +28,3 @@ L.Map.DoubleClickZoom = L.Handler.extend({ } } }); - -L.Map.addInitHook('addHandler', 'doubleClickZoom', L.Map.DoubleClickZoom); diff --git a/loleaflet/src/map/handler/Map.Drag.js b/loleaflet/src/map/handler/Map.Drag.js index f95e05f96..74a2fe64a 100644 --- a/loleaflet/src/map/handler/Map.Drag.js +++ b/loleaflet/src/map/handler/Map.Drag.js @@ -126,5 +126,3 @@ L.Map.Drag = L.Handler.extend({ } } }); - -L.Map.addInitHook('addHandler', 'dragging', L.Map.Drag); diff --git a/loleaflet/src/map/handler/Map.Keyboard.js b/loleaflet/src/map/handler/Map.Keyboard.js index 9ef49f1b9..d13cc37e2 100644 --- a/loleaflet/src/map/handler/Map.Keyboard.js +++ b/loleaflet/src/map/handler/Map.Keyboard.js @@ -563,5 +563,3 @@ L.Map.Keyboard = L.Handler.extend({ return false; } }); - -L.Map.addInitHook('addHandler', 'keyboard', L.Map.Keyboard); diff --git a/loleaflet/src/map/handler/Map.Mouse.js b/loleaflet/src/map/handler/Map.Mouse.js index 39d2cf722..e18fc6ad5 100644 --- a/loleaflet/src/map/handler/Map.Mouse.js +++ b/loleaflet/src/map/handler/Map.Mouse.js @@ -245,5 +245,3 @@ L.Map.Mouse = L.Handler.extend({ } } }); - -L.Map.addInitHook('addHandler', 'mouse', L.Map.Mouse); diff --git a/loleaflet/src/map/handler/Map.Scroll.js b/loleaflet/src/map/handler/Map.Scroll.js index 2b0e047c1..9090fb042 100644 --- a/loleaflet/src/map/handler/Map.Scroll.js +++ b/loleaflet/src/map/handler/Map.Scroll.js @@ -106,5 +106,3 @@ L.Map.Scroll = L.Handler.extend({ } } }); - -L.Map.addInitHook('addHandler', 'scrollHandler', L.Map.Scroll); diff --git a/loleaflet/src/map/handler/Map.Tap.js b/loleaflet/src/map/handler/Map.Tap.js index 5c10a0ef4..81565f2e4 100644 --- a/loleaflet/src/map/handler/Map.Tap.js +++ b/loleaflet/src/map/handler/Map.Tap.js @@ -144,7 +144,3 @@ L.Map.Tap = L.Handler.extend({ this._map._handleDOMEvent(simulatedEvent); } }); - -if (L.Browser.touch && !L.Browser.pointer) { - L.Map.addInitHook('addHandler', 'tap', L.Map.Tap); -} diff --git a/loleaflet/src/map/handler/Map.TouchZoom.js b/loleaflet/src/map/handler/Map.TouchZoom.js index 5e33162dd..35b3cf839 100644 --- a/loleaflet/src/map/handler/Map.TouchZoom.js +++ b/loleaflet/src/map/handler/Map.TouchZoom.js @@ -120,5 +120,3 @@ L.Map.TouchZoom = L.Handler.extend({ return this._startCenter.add(centerOffset); } }); - -L.Map.addInitHook('addHandler', 'touchZoom', L.Map.TouchZoom); commit dcb8ea10c11258f0ded919233c47871df0b2a056 Author: Henry Castro <hcas...@collabora.com> AuthorDate: Fri Jun 7 11:50:40 2019 -0400 Commit: Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk> CommitDate: Wed Jul 10 14:18:46 2019 +0900 loleaflet: mobile: iuse initialize function in L.Map.CalcTap handler Change-Id: I201035a4c5a7a21853df97149c45f7a08d4553f2 diff --git a/loleaflet/src/map/handler/Map.CalcTap.js b/loleaflet/src/map/handler/Map.CalcTap.js index f76a7a4f2..e10cff5a9 100644 --- a/loleaflet/src/map/handler/Map.CalcTap.js +++ b/loleaflet/src/map/handler/Map.CalcTap.js @@ -5,7 +5,10 @@ /* global Hammer $ */ L.Map.CalcTap = L.Handler.extend({ - addHooks: function () { + + initialize: function (map) { + L.Handler.prototype.initialize.call(this, map); + if (!this._toolbar) { this._toolbar = L.control.contextToolbar(); } @@ -19,12 +22,10 @@ L.Map.CalcTap = L.Handler.extend({ direction: Hammer.DIRECTION_ALL }); } - this._hammer.on('hammer.input', L.bind(this._onHammer, this)); - this._hammer.on('tap', L.bind(this._onTap, this)); - 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._map.on('updatepermission', this._onPermission, this); + + for (var events in L.Draggable.MOVE) { + L.DomEvent.on(document, L.Draggable.END[events], this._onDocUp, this); + } /// $.contextMenu does not support touch events so, /// attach 'touchend' menu clicks event handler @@ -40,13 +41,25 @@ L.Map.CalcTap = L.Handler.extend({ } }, + addHooks: function () { + this._hammer.on('hammer.input', L.bind(this._onHammer, this)); + this._hammer.on('tap', L.bind(this._onTap, this)); + 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._map.on('updatepermission', this._onPermission, this); + this._onPermission({perm: this._map._permission}); + }, + removeHooks: function () { - this._hammer.off('doubletap', L.bind(this._onDoubleTap, this)); - this._hammer.off('press', L.bind(this._onPress, this)); + this._hammer.off('hammer.input', L.bind(this._onHammer, this)); this._hammer.off('tap', L.bind(this._onTap, this)); 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('doubletap', L.bind(this._onDoubleTap, this)); + this._hammer.off('press', L.bind(this._onPress, this)); + this._map.off('updatepermission', this._onPermission, this); }, _onPermission: function (e) { @@ -64,6 +77,12 @@ L.Map.CalcTap = L.Handler.extend({ L.DomEvent.stopPropagation(e.srcEvent); }, + _onDocUp: function () { + if (!this._map.touchCalc.enabled()) { + this._map.touchCalc.enable(); + } + }, + _onPress: function (e) { var point = e.pointers[0], containerPoint = this._map.mouseEventToContainerPoint(point), commit 42f94e962e877d9e8cc7ee008c8cf97e721f6a70 Author: Henry Castro <hcas...@collabora.com> AuthorDate: Thu Jun 6 09:56:28 2019 -0400 Commit: Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk> CommitDate: Wed Jul 10 14:18:46 2019 +0900 loleaflet: mobile: attach 'touchend' event handler to $.contextMenu $.contextMenu does not support touch events so, attach 'touchend' menu clicks event handler Change-Id: Ia6ed0e4d6d5c9d425fd149652f453c192c70b412 diff --git a/loleaflet/src/map/handler/Map.CalcTap.js b/loleaflet/src/map/handler/Map.CalcTap.js index 4d391039b..f76a7a4f2 100644 --- a/loleaflet/src/map/handler/Map.CalcTap.js +++ b/loleaflet/src/map/handler/Map.CalcTap.js @@ -3,7 +3,7 @@ * L.Map.CalcTap is used to enable mobile taps. */ -/* global Hammer */ +/* global Hammer $ */ L.Map.CalcTap = L.Handler.extend({ addHooks: function () { if (!this._toolbar) { @@ -25,6 +25,19 @@ L.Map.CalcTap = L.Handler.extend({ this._hammer.on('pan', L.bind(this._onPan, this)); this._hammer.on('panend', L.bind(this._onPanEnd, this)); this._map.on('updatepermission', this._onPermission, this); + + /// $.contextMenu does not support touch events so, + /// attach 'touchend' menu clicks event handler + if (this._hammer.input instanceof Hammer.TouchInput) { + var $doc = $(document); + $doc.on('touchend.contextMenu', '.context-menu-item', function (e) { + var $elem = $(this); + + if ($elem.data().contextMenu.selector === '.leaflet-layer') { + $.contextMenu.handle.itemClick.apply(this, [e]); + } + }); + } }, removeHooks: function () { commit fddadc78a4b00e07f2c04482c1cffd41f42bc3f1 Author: Henry Castro <hcas...@collabora.com> AuthorDate: Wed Jun 5 12:35:42 2019 -0400 Commit: Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk> CommitDate: Wed Jul 10 14:18:46 2019 +0900 loleaflet: mobile: enable panning events in read-only documents Change-Id: I94e496428173d487ecd1a3017863e2bbaefc667a diff --git a/loleaflet/src/map/handler/Map.CalcTap.js b/loleaflet/src/map/handler/Map.CalcTap.js index 50274d959..4d391039b 100644 --- a/loleaflet/src/map/handler/Map.CalcTap.js +++ b/loleaflet/src/map/handler/Map.CalcTap.js @@ -21,6 +21,9 @@ L.Map.CalcTap = L.Handler.extend({ } this._hammer.on('hammer.input', L.bind(this._onHammer, this)); this._hammer.on('tap', L.bind(this._onTap, this)); + 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._map.on('updatepermission', this._onPermission, this); }, @@ -37,15 +40,9 @@ L.Map.CalcTap = L.Handler.extend({ if (e.perm == 'edit') { this._hammer.on('doubletap', L.bind(this._onDoubleTap, this)); this._hammer.on('press', L.bind(this._onPress, this)); - 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)); } else { this._hammer.off('doubletap', L.bind(this._onDoubleTap, this)); this._hammer.off('press', L.bind(this._onPress, this)); - 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)); } }, commit b2311c31eb484c78a09f18413e55b2c7c9db999b Author: Henry Castro <hcas...@collabora.com> AuthorDate: Wed Jun 5 11:55:58 2019 -0400 Commit: Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk> CommitDate: Wed Jul 10 14:18:46 2019 +0900 loleaflet: mobile: hide the context toolbar on tap event Change-Id: I40d8d9f5e0ece04d3cd17d3b66ad17f89a0d67a4 diff --git a/loleaflet/src/core/Socket.js b/loleaflet/src/core/Socket.js index 811506d4a..74b2cd3d1 100644 --- a/loleaflet/src/core/Socket.js +++ b/loleaflet/src/core/Socket.js @@ -761,6 +761,7 @@ L.Socket = L.Class.extend({ if (L.Browser.touch && !L.Browser.pointer) { this._map.options.inertia = false; this._map.removeHandler('tap'); + this._map.removeHandler('mouse'); this._map.removeHandler('touchZoom'); if (this._map.dragging.enabled()) { this._map.dragging.disable(); diff --git a/loleaflet/src/map/handler/Map.CalcTap.js b/loleaflet/src/map/handler/Map.CalcTap.js index 43f3335ca..50274d959 100644 --- a/loleaflet/src/map/handler/Map.CalcTap.js +++ b/loleaflet/src/map/handler/Map.CalcTap.js @@ -61,10 +61,11 @@ L.Map.CalcTap = L.Handler.extend({ latlng = this._map.layerPointToLatLng(layerPoint), mousePos = this._map._docLayer._latLngToTwips(latlng); - if (this._map._docLayer.containsSelection(latlng)) { + if (!this._toolbar._map && this._map._docLayer.containsSelection(latlng)) { this._toolbar._pos = containerPoint; this._toolbar.addTo(this._map); } else { + this._toolbar.remove(); this._map._contextMenu._onMouseDown({originalEvent: e.srcEvent}); // send right click to trigger context menus this._map._docLayer._postMouseEvent('buttondown', mousePos.x, mousePos.y, 1, 4, 0); @@ -82,6 +83,7 @@ L.Map.CalcTap = L.Handler.extend({ latlng = this._map.layerPointToLatLng(layerPoint), mousePos = this._map._docLayer._latLngToTwips(latlng); + this._toolbar.remove(); this._map._contextMenu._onMouseDown({originalEvent: e.srcEvent}); this._map._docLayer._postMouseEvent('buttondown', mousePos.x, mousePos.y, 1, 1, 0); this._map._docLayer._postMouseEvent('buttonup', mousePos.x, mousePos.y, 1, 1, 0); commit 045207282330a480246a05db8e523b3c80031980 Author: Henry Castro <hcas...@collabora.com> AuthorDate: Wed Jun 5 10:31:37 2019 -0400 Commit: Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk> CommitDate: Wed Jul 10 14:18:46 2019 +0900 loleaflet: mobile: start cell selections when a drag inside ... the cursor cell Otherwise pan the sheet as before. Change-Id: I2b8d4278df4157229960930928da022872982022 diff --git a/loleaflet/src/map/handler/Map.CalcTap.js b/loleaflet/src/map/handler/Map.CalcTap.js index f7174ad1b..43f3335ca 100644 --- a/loleaflet/src/map/handler/Map.CalcTap.js +++ b/loleaflet/src/map/handler/Map.CalcTap.js @@ -21,7 +21,6 @@ L.Map.CalcTap = L.Handler.extend({ } this._hammer.on('hammer.input', L.bind(this._onHammer, this)); this._hammer.on('tap', L.bind(this._onTap, this)); - this._hammer.on('swipe', L.bind(this._onSwipe, this)); this._map.on('updatepermission', this._onPermission, this); }, @@ -29,7 +28,6 @@ L.Map.CalcTap = L.Handler.extend({ this._hammer.off('doubletap', L.bind(this._onDoubleTap, this)); this._hammer.off('press', L.bind(this._onPress, this)); this._hammer.off('tap', L.bind(this._onTap, this)); - this._hammer.off('swipe', L.bind(this._onSwipe, this)); 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)); @@ -73,6 +71,7 @@ L.Map.CalcTap = L.Handler.extend({ this._map._docLayer._postMouseEvent('buttonup', mousePos.x, mousePos.y, 1, 4, 0); } + this._cellSelections = false; e.preventDefault(); }, @@ -86,6 +85,7 @@ L.Map.CalcTap = L.Handler.extend({ this._map._contextMenu._onMouseDown({originalEvent: e.srcEvent}); this._map._docLayer._postMouseEvent('buttondown', mousePos.x, mousePos.y, 1, 1, 0); this._map._docLayer._postMouseEvent('buttonup', mousePos.x, mousePos.y, 1, 1, 0); + this._cellSelections = false; }, _onDoubleTap: function (e) { @@ -110,7 +110,12 @@ L.Map.CalcTap = L.Handler.extend({ latlng = this._map.layerPointToLatLng(layerPoint), mousePos = this._map._docLayer._latLngToTwips(latlng); - this._map._docLayer._postMouseEvent('buttondown', mousePos.x, mousePos.y, 1, 1, 0); + if (this._map._docLayer._cellCursor.contains(latlng)) { + this._cellSelections = true; + this._map._docLayer._postMouseEvent('buttondown', mousePos.x, mousePos.y, 1, 1, 0); + } else { + this._map.dragging._draggable._onDown(this._constructFakeEvent(point, 'mousedown')); + } }, _onPan: function (e) { @@ -120,7 +125,11 @@ L.Map.CalcTap = L.Handler.extend({ latlng = this._map.layerPointToLatLng(layerPoint), mousePos = this._map._docLayer._latLngToTwips(latlng); - this._map._docLayer._postMouseEvent('move', mousePos.x, mousePos.y, 1, 1, 0); + if (this._cellSelections) { + this._map._docLayer._postMouseEvent('move', mousePos.x, mousePos.y, 1, 1, 0); + } else { + this._map.dragging._draggable._onMove(this._constructFakeEvent(point, 'mousemove')); + } }, _onPanEnd: function (e) { @@ -130,14 +139,17 @@ L.Map.CalcTap = L.Handler.extend({ latlng = this._map.layerPointToLatLng(layerPoint), mousePos = this._map._docLayer._latLngToTwips(latlng); - this._map._docLayer._postMouseEvent('buttonup', mousePos.x, mousePos.y, 1, 1, 0); + if (this._cellSelections) { + this._cellSelections = false; + this._map._docLayer._postMouseEvent('buttonup', mousePos.x, mousePos.y, 1, 1, 0); + } else { + this._map.dragging._draggable._onUp(this._constructFakeEvent(point, 'mouseup')); + } }, - _onSwipe: function (e) { - var evt = e.pointers[0]; - - var iniEvent = { - type: 'mousedown', + _constructFakeEvent: function (evt, type) { + var fakeEvt = { + type: type, canBubble: false, cancelable: true, screenX: evt.screenX, @@ -153,26 +165,6 @@ L.Map.CalcTap = L.Handler.extend({ preventDefault: function () {} }; - var endEvent = { - type: 'mousemove', - canBubble: false, - cancelable: true, - screenX: evt.screenX, - screenY: evt.screenY, - clientX: evt.clientX + e.deltaX, - clientY: evt.clientY + e.deltaY, - ctrlKey: false, - altKey: false, - shiftKey: false, - metaKey: false, - button: 0, - target: evt.target, - preventDefault: function () {} - }; - - this._map.dragging._draggable._onDown(iniEvent); - this._map.dragging._draggable._moved = true; - this._map.dragging._draggable._onMove(endEvent); - setTimeout(L.bind(this._map.dragging._draggable._onUp, this._map.dragging._draggable, endEvent), 0); + return fakeEvt; } }); commit 0c19139f5d3f0b344dc378b3741a5e29185e87e9 Author: Henry Castro <hcas...@collabora.com> AuthorDate: Tue Jun 4 22:24:27 2019 -0400 Commit: Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk> CommitDate: Wed Jul 10 14:18:46 2019 +0900 loleaflet: mobile: display a context menu if touch press detected Change-Id: Iae19d2217c8e71de58debf1904bcd8cd83d124b1 diff --git a/loleaflet/src/control/Control.ContextMenu.js b/loleaflet/src/control/Control.ContextMenu.js index a5cd4929c..7abdcbcfc 100644 --- a/loleaflet/src/control/Control.ContextMenu.js +++ b/loleaflet/src/control/Control.ContextMenu.js @@ -50,6 +50,7 @@ L.Control.ContextMenu = L.Control.extend({ onAdd: function (map) { this._prevMousePos = null; + map._contextMenu = this; map.on('locontextmenu', this._onContextMenu, this); map.on('mousedown', this._onMouseDown, this); map.on('keydown', this._onKeyDown, this); diff --git a/loleaflet/src/map/handler/Map.CalcTap.js b/loleaflet/src/map/handler/Map.CalcTap.js index f4dd86d2e..f7174ad1b 100644 --- a/loleaflet/src/map/handler/Map.CalcTap.js +++ b/loleaflet/src/map/handler/Map.CalcTap.js @@ -60,12 +60,20 @@ L.Map.CalcTap = L.Handler.extend({ var point = e.pointers[0], containerPoint = this._map.mouseEventToContainerPoint(point), layerPoint = this._map.containerPointToLayerPoint(containerPoint), - latlng = this._map.layerPointToLatLng(layerPoint); + latlng = this._map.layerPointToLatLng(layerPoint), + mousePos = this._map._docLayer._latLngToTwips(latlng); if (this._map._docLayer.containsSelection(latlng)) { this._toolbar._pos = containerPoint; this._toolbar.addTo(this._map); + } else { + this._map._contextMenu._onMouseDown({originalEvent: e.srcEvent}); + // send right click to trigger context menus + this._map._docLayer._postMouseEvent('buttondown', mousePos.x, mousePos.y, 1, 4, 0); + this._map._docLayer._postMouseEvent('buttonup', mousePos.x, mousePos.y, 1, 4, 0); } + + e.preventDefault(); }, _onTap: function (e) { @@ -75,6 +83,7 @@ L.Map.CalcTap = L.Handler.extend({ latlng = this._map.layerPointToLatLng(layerPoint), mousePos = this._map._docLayer._latLngToTwips(latlng); + this._map._contextMenu._onMouseDown({originalEvent: e.srcEvent}); this._map._docLayer._postMouseEvent('buttondown', mousePos.x, mousePos.y, 1, 1, 0); this._map._docLayer._postMouseEvent('buttonup', mousePos.x, mousePos.y, 1, 1, 0); }, commit 1df1aa8dc661b9918f929f5a9a49dc6a2ce30143 Author: Henry Castro <hcas...@collabora.com> AuthorDate: Tue Jun 4 18:06:04 2019 -0400 Commit: Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk> CommitDate: Wed Jul 10 14:18:46 2019 +0900 loleaflet: mobile: use doubletap event to set focus Change-Id: I37f59db2ce37ec5117c40be842f2ad06d045a212 diff --git a/loleaflet/src/control/Control.MobileInput.js b/loleaflet/src/control/Control.MobileInput.js index 392d9b30d..84cd0b36f 100644 --- a/loleaflet/src/control/Control.MobileInput.js +++ b/loleaflet/src/control/Control.MobileInput.js @@ -59,7 +59,7 @@ L.Control.MobileInput = L.Control.extend({ } }, - focus: function(focus) { + focus: function (focus) { if (this._map._permission !== 'edit') { return; } @@ -70,6 +70,10 @@ L.Control.MobileInput = L.Control.extend({ } }, + hasFocus: function () { + return this._textArea === document.activeElement; + }, + select: function() { this._textArea.select(); }, @@ -87,7 +91,7 @@ L.Control.MobileInput = L.Control.extend({ }, showCursor: function () { - if (this._textArea === document.activeElement) { + if (this.hasFocus()) { this.onGotFocus(); } }, diff --git a/loleaflet/src/layer/marker/ClipboardContainer.js b/loleaflet/src/layer/marker/ClipboardContainer.js index 41aae051d..ac1f01185 100644 --- a/loleaflet/src/layer/marker/ClipboardContainer.js +++ b/loleaflet/src/layer/marker/ClipboardContainer.js @@ -32,7 +32,7 @@ L.ClipboardContainer = L.Layer.extend({ this._map._handleDOMEvent, this._map); }, - focus: function(focus) { + focus: function (focus) { if (focus === false) { this._textArea.blur(); } else { @@ -40,6 +40,10 @@ L.ClipboardContainer = L.Layer.extend({ } }, + hasFocus: function () { + return this._textArea === document.activeElement; + }, + select: function() { this._textArea.select(); }, diff --git a/loleaflet/src/map/Map.js b/loleaflet/src/map/Map.js index 3326d8042..c88839020 100644 --- a/loleaflet/src/map/Map.js +++ b/loleaflet/src/map/Map.js @@ -820,6 +820,10 @@ L.Map = L.Evented.extend({ this._clipboardContainer.focus(); }, + hasFocus: function () { + return this._clipboardContainer.hasFocus(); + }, + setHelpTarget: function(page) { this._helpTarget = page; }, diff --git a/loleaflet/src/map/handler/Map.CalcTap.js b/loleaflet/src/map/handler/Map.CalcTap.js index 7b0238034..f4dd86d2e 100644 --- a/loleaflet/src/map/handler/Map.CalcTap.js +++ b/loleaflet/src/map/handler/Map.CalcTap.js @@ -88,7 +88,10 @@ L.Map.CalcTap = L.Handler.extend({ this._map._docLayer._postMouseEvent('buttondown', mousePos.x, mousePos.y, 1, 1, 0); this._map._docLayer._postMouseEvent('buttonup', mousePos.x, mousePos.y, 1, 1, 0); - this._map.focus(); + + if (!this._map.hasFocus()) { + setTimeout(L.bind(this._map.focus, this._map), 0); + } }, _onPanStart: function (e) { commit 343dca958f4debfdaf1a3c7f390795afbc0b974f Author: Henry Castro <hcas...@collabora.com> AuthorDate: Tue Jun 4 17:50:13 2019 -0400 Commit: Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk> CommitDate: Wed Jul 10 14:18:46 2019 +0900 loleaflet: mobile: add listener to "double tab" event The sequence to recognize 'doubletap' event, according to Hammerjs defaults: tap -> doubletap Change-Id: Ie2877b8527ae2274e7b2169080c25a278434f1f0 diff --git a/loleaflet/src/map/handler/Map.CalcTap.js b/loleaflet/src/map/handler/Map.CalcTap.js index 34b1c74b1..7b0238034 100644 --- a/loleaflet/src/map/handler/Map.CalcTap.js +++ b/loleaflet/src/map/handler/Map.CalcTap.js @@ -11,36 +11,13 @@ L.Map.CalcTap = L.Handler.extend({ } if (!this._hammer) { - this._hammer = new Hammer(this._map._container); + this._hammer = new Hammer(this._map._mapPane); this._hammer.get('swipe').set({ direction: Hammer.DIRECTION_ALL }); this._hammer.get('pan').set({ direction: Hammer.DIRECTION_ALL }); - - /*FIXME the sidebar shows after double tap*/ - /*this._hammer = new Hammer.Manager(this._map._container, { - touchAction: 'none' - }); - - /*this._hammer.add(new Hammer.Tap({ - event: 'doubletap', - taps: 2 - })); - this._hammer.add(new Hammer.Press()); - this._hammer.add(new Hammer.Tap()); - this._hammer.add(new Hammer.Pan({ - direction: Hammer.DIRECTION_ALL, - threshold: 10, - pointers: 1 - })); - this._hammer.add(new Hammer.Swipe({ - direction: Hammer.DIRECTION_ALL, - threshold: 5, - pointers: 1, - velocity: 0.3 - }));*/ } this._hammer.on('hammer.input', L.bind(this._onHammer, this)); this._hammer.on('tap', L.bind(this._onTap, this)); @@ -49,7 +26,7 @@ L.Map.CalcTap = L.Handler.extend({ }, removeHooks: function () { - //this._hammer.off('doubletap', L.bind(this._onDoubleTap, this)); + this._hammer.off('doubletap', L.bind(this._onDoubleTap, this)); this._hammer.off('press', L.bind(this._onPress, this)); this._hammer.off('tap', L.bind(this._onTap, this)); this._hammer.off('swipe', L.bind(this._onSwipe, this)); @@ -60,13 +37,13 @@ L.Map.CalcTap = L.Handler.extend({ _onPermission: function (e) { if (e.perm == 'edit') { - //this._hammer.on('doubletap', L.bind(this._onDoubleTap, this)); + this._hammer.on('doubletap', L.bind(this._onDoubleTap, this)); this._hammer.on('press', L.bind(this._onPress, this)); 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)); } else { - //this._hammer.off('doubletap', L.bind(this._onDoubleTap, this)); + this._hammer.off('doubletap', L.bind(this._onDoubleTap, this)); this._hammer.off('press', L.bind(this._onPress, this)); this._hammer.off('panstart', L.bind(this._onPanStart, this)); this._hammer.off('pan', L.bind(this._onPan, this)); @@ -75,7 +52,8 @@ L.Map.CalcTap = L.Handler.extend({ }, _onHammer: function (e) { - e.preventDefault(); + L.DomEvent.preventDefault(e.srcEvent); + L.DomEvent.stopPropagation(e.srcEvent); }, _onPress: function (e) { @@ -99,7 +77,6 @@ L.Map.CalcTap = L.Handler.extend({ this._map._docLayer._postMouseEvent('buttondown', mousePos.x, mousePos.y, 1, 1, 0); this._map._docLayer._postMouseEvent('buttonup', mousePos.x, mousePos.y, 1, 1, 0); - this._map.focus(); }, _onDoubleTap: function (e) { @@ -109,8 +86,8 @@ L.Map.CalcTap = L.Handler.extend({ latlng = this._map.layerPointToLatLng(layerPoint), mousePos = this._map._docLayer._latLngToTwips(latlng); - this._map._docLayer._postMouseEvent('buttondown', mousePos.x, mousePos.y, 2, 1, 0); - this._map._docLayer._postMouseEvent('buttonup', mousePos.x, mousePos.y, 2, 1, 0); + this._map._docLayer._postMouseEvent('buttondown', mousePos.x, mousePos.y, 1, 1, 0); + this._map._docLayer._postMouseEvent('buttonup', mousePos.x, mousePos.y, 1, 1, 0); this._map.focus(); }, @@ -142,7 +119,6 @@ L.Map.CalcTap = L.Handler.extend({ mousePos = this._map._docLayer._latLngToTwips(latlng); this._map._docLayer._postMouseEvent('buttonup', mousePos.x, mousePos.y, 1, 1, 0); - this._map.focus(); }, _onSwipe: function (e) { commit 40e0a42326eed886875285c08a2c682804e72928 Author: Henry Castro <hcas...@collabora.com> AuthorDate: Tue Jun 4 16:21:47 2019 -0400 Commit: Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk> CommitDate: Wed Jul 10 14:18:46 2019 +0900 loleaflet: mobile: assign CSS properties to the "resize-detector" element Setting focus to the textArea element has a side effect, when the first touch it shows the floating keyboard Change-Id: Ib17c56de0caa67eaa28f03997afe9d724e30ce30 diff --git a/loleaflet/src/map/Map.js b/loleaflet/src/map/Map.js index f84c70df1..3326d8042 100644 --- a/loleaflet/src/map/Map.js +++ b/loleaflet/src/map/Map.js @@ -136,8 +136,7 @@ L.Map = L.Evented.extend({ // Avoid white bar on the bottom - force resize-detector to get full size if (window.mode.isMobile()) { $('#document-container').css('bottom', '0px'); - this._clipboardContainer._textArea.blur(); - this._clipboardContainer._textArea.focus(); + $(this._resizeDetector).css('bottom', '0px'); } // When all these conditions are met, fire statusindicator:initializationcomplete commit 04a8e68a71ceed05008897f90e77a9f8c4edd58b Author: Henry Castro <hcas...@collabora.com> AuthorDate: Mon Jun 3 18:06:07 2019 -0400 Commit: Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk> CommitDate: Wed Jul 10 14:18:46 2019 +0900 loleaflet: ilisten to the secret event that it is emitted ... by hammerjs library Otherwise, it doesn't guarantee that the events are prevented to default actions by the browser Change-Id: Iede8b64e25a27e54f7ad173f4df8daf4aeba3824 diff --git a/loleaflet/src/map/handler/Map.CalcTap.js b/loleaflet/src/map/handler/Map.CalcTap.js index bb4ea0699..34b1c74b1 100644 --- a/loleaflet/src/map/handler/Map.CalcTap.js +++ b/loleaflet/src/map/handler/Map.CalcTap.js @@ -42,7 +42,7 @@ L.Map.CalcTap = L.Handler.extend({ velocity: 0.3 }));*/ } - + this._hammer.on('hammer.input', L.bind(this._onHammer, this)); this._hammer.on('tap', L.bind(this._onTap, this)); this._hammer.on('swipe', L.bind(this._onSwipe, this)); this._map.on('updatepermission', this._onPermission, this); @@ -74,6 +74,10 @@ L.Map.CalcTap = L.Handler.extend({ } }, + _onHammer: function (e) { + e.preventDefault(); + }, + _onPress: function (e) { var point = e.pointers[0], containerPoint = this._map.mouseEventToContainerPoint(point), @@ -84,7 +88,6 @@ L.Map.CalcTap = L.Handler.extend({ this._toolbar._pos = containerPoint; this._toolbar.addTo(this._map); } - e.preventDefault(); }, _onTap: function (e) { @@ -97,7 +100,6 @@ L.Map.CalcTap = L.Handler.extend({ this._map._docLayer._postMouseEvent('buttondown', mousePos.x, mousePos.y, 1, 1, 0); this._map._docLayer._postMouseEvent('buttonup', mousePos.x, mousePos.y, 1, 1, 0); this._map.focus(); - e.preventDefault(); }, _onDoubleTap: function (e) { @@ -110,7 +112,6 @@ L.Map.CalcTap = L.Handler.extend({ this._map._docLayer._postMouseEvent('buttondown', mousePos.x, mousePos.y, 2, 1, 0); this._map._docLayer._postMouseEvent('buttonup', mousePos.x, mousePos.y, 2, 1, 0); this._map.focus(); - e.preventDefault(); }, _onPanStart: function (e) { @@ -121,7 +122,6 @@ L.Map.CalcTap = L.Handler.extend({ mousePos = this._map._docLayer._latLngToTwips(latlng); this._map._docLayer._postMouseEvent('buttondown', mousePos.x, mousePos.y, 1, 1, 0); - e.preventDefault(); }, _onPan: function (e) { @@ -132,7 +132,6 @@ L.Map.CalcTap = L.Handler.extend({ mousePos = this._map._docLayer._latLngToTwips(latlng); this._map._docLayer._postMouseEvent('move', mousePos.x, mousePos.y, 1, 1, 0); - e.preventDefault(); }, _onPanEnd: function (e) { @@ -144,7 +143,6 @@ L.Map.CalcTap = L.Handler.extend({ this._map._docLayer._postMouseEvent('buttonup', mousePos.x, mousePos.y, 1, 1, 0); this._map.focus(); - e.preventDefault(); }, _onSwipe: function (e) { @@ -188,6 +186,5 @@ L.Map.CalcTap = L.Handler.extend({ this._map.dragging._draggable._moved = true; this._map.dragging._draggable._onMove(endEvent); setTimeout(L.bind(this._map.dragging._draggable._onUp, this._map.dragging._draggable, endEvent), 0); - e.preventDefault(); } }); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits