nakarte

Source code of https://map.sikmir.ru (fork)
git clone git://git.sikmir.ru/nakarte
Log | Files | Refs | LICENSE

commit ef27dfade22ea6f096f47640785a73646fa27e8a
parent e83750cb93107782a9775fa1357883fa86398578
Author: Sergey Orlov <wladimirych@gmail.com>
Date:   Tue,  5 May 2020 12:22:23 +0200

drag events: properly stop drag in mouseleave handler

Related to #16

Diffstat:
Msrc/lib/leaflet.events.drag/index.js | 21++++++++++++---------
1 file changed, 12 insertions(+), 9 deletions(-)

diff --git a/src/lib/leaflet.events.drag/index.js b/src/lib/leaflet.events.drag/index.js @@ -37,18 +37,12 @@ const DragEvents = L.Evented.extend({ onMouseUp: function(e) { if (this.dragButton === e.button) { - L.DomUtil.enableImageDrag(); - L.DomUtil.enableTextSelection(); if (this.isDragging) { - this.isDragging = false; this.fireDragEvent('dragend', e); } else { this.fire('click', {originalEvent: e, target: this.element}); } - this.dragButton = null; - document.removeEventListener('mousemove', this._moveHandler, true); - L.DomEvent.off(document, 'mouseup', this.onMouseUp, this); - L.DomEvent.off(this.element, 'mouseleave', this.onMouseLeave, this); + this.finishDrag(); } }, @@ -73,9 +67,8 @@ const DragEvents = L.Evented.extend({ onMouseLeave: function(e) { if (this.isDragging) { - this.isDragging = false; this.fireDragEvent('dragend', e); - this.dragButton = null; + this.finishDrag(); } }, @@ -88,6 +81,16 @@ const DragEvents = L.Evented.extend({ dragMovement: pos.subtract(prevPos) // e.movementX is not available in Safari }; this.fire(type, data); + }, + + finishDrag: function() { + this.isDragging = false; + this.dragButton = null; + L.DomUtil.enableImageDrag(); + L.DomUtil.enableTextSelection(); + document.removeEventListener('mousemove', this._moveHandler, true); + L.DomEvent.off(document, 'mouseup', this.onMouseUp, this); + L.DomEvent.off(this.element, 'mouseleave', this.onMouseLeave, this); } } );