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:
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);
}
}
);