loleaflet/src/map/handler/Map.Tap.js |   65 ++++++++++++++---------------------
 1 file changed, 26 insertions(+), 39 deletions(-)

New commits:
commit 03a29a169968a48064a190f40b68e111168d03f5
Author:     Henry Castro <hcas...@collabora.com>
AuthorDate: Tue Jul 24 13:57:44 2018 -0400
Commit:     Henry Castro <hcas...@collabora.com>
CommitDate: Tue Jul 24 14:03:10 2018 -0400

    loleaflet: mobile: handle long click
    
    Change-Id: I3c3ecce737e5c2457e922e2e612f0312dfab72dd

diff --git a/loleaflet/src/map/handler/Map.Tap.js 
b/loleaflet/src/map/handler/Map.Tap.js
index d5d25d570..b8a4e96a5 100644
--- a/loleaflet/src/map/handler/Map.Tap.js
+++ b/loleaflet/src/map/handler/Map.Tap.js
@@ -22,31 +22,21 @@ L.Map.Tap = L.Handler.extend({
 
                L.DomEvent.preventDefault(e);
 
-               this._fireClick = true;
-
                // don't simulate click or track longpress if more than 1 touch
                if (e.touches.length > 1) {
-                       this._fireClick = false;
                        clearTimeout(this._holdTimeout);
                        return;
                }
 
-               var first = e.touches[0],
-                   el = first.target;
+               var first = e.touches[0];
 
                this._startPos = this._newPos = new L.Point(first.clientX, 
first.clientY);
 
-               // if touching a link, highlight it
-               if (el.tagName && el.tagName.toLowerCase() === 'a') {
-                       L.DomUtil.addClass(el, 'leaflet-active');
-               }
-
                // simulate long hold but setting a timeout
                this._holdTimeout = setTimeout(L.bind(function () {
                        if (this._isTapValid()) {
-                               this._fireClick = false;
-                               this._onUp();
-                               this._simulateEvent('contextmenu', first);
+                               this._fireDblClick = true;
+                               this._onUp(e);
                        }
                }, this), 1000);
 
@@ -66,21 +56,12 @@ L.Map.Tap = L.Handler.extend({
                        touchend: this._onUp
                }, this);
 
-               if (this._fireClick && e && e.changedTouches) {
-
-                       var first = e.changedTouches[0],
-                           el = first.target;
-
-                       if (el && el.tagName && el.tagName.toLowerCase() === 
'a') {
-                               L.DomUtil.removeClass(el, 'leaflet-active');
-                       }
+               var first = e.changedTouches[0];
+               this._simulateEvent('mouseup', first);
 
-                       this._simulateEvent('mouseup', first);
-
-                       // simulate click if the touch didn't move too much
-                       if (this._isTapValid()) {
-                               this._simulateEvent('click', first);
-                       }
+               if (this._fireDblClick) {
+                       this._simulateEvent('dblclick', first);
+                       this._fireDblClick = false;
                }
        },
 
@@ -91,21 +72,27 @@ L.Map.Tap = L.Handler.extend({
        _onMove: function (e) {
                var first = e.touches[0];
                this._newPos = new L.Point(first.clientX, first.clientY);
+               this._simulateEvent('mousemove', first);
        },
 
        _simulateEvent: function (type, e) {
-               var simulatedEvent = document.createEvent('MouseEvents');
-
-               simulatedEvent._simulated = true;
-               e.target._simulatedClick = true;
-
-               simulatedEvent.initMouseEvent(
-                       type, true, true, window, 1,
-                       e.screenX, e.screenY,
-                       e.clientX, e.clientY,
-                       false, false, false, false, 0, null);
-
-               e.target.dispatchEvent(simulatedEvent);
+               var simulatedEvent = {
+                       type: type,
+                       canBubble: false,
+                       cancelable: true,
+                       screenX: e.screenX,
+                       screenY: e.screenY,
+                       clientX: e.clientX,
+                       clientY: e.clientY,
+                       ctrlKey: false,
+                       altKey: false,
+                       shiftKey: false,
+                       metaKey: false,
+                       button: 0,
+                       target: e.target,
+                       preventDefault: function () {}
+               };
+               this._map._handleDOMEvent(simulatedEvent);
        }
 });
 
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to