commit 163634d14cd275a9e03ae630e40d3ace09c1adf8
parent e2042845f2ddd63a4007b7e67b3e0944bd3cd206
Author: Sergej Orlov <wladimirych@gmail.com>
Date: Sat, 18 Feb 2017 16:50:11 +0300
unified stopping mouse events for all controls
Diffstat:
10 files changed, 56 insertions(+), 33 deletions(-)
diff --git a/src/App.js b/src/App.js
@@ -22,6 +22,7 @@ import enableLayersConfig from 'lib/leaflet.control.layers.configure';
import hashState from 'lib/leaflet.hashState/hashState';
import raiseControlsOnFocus from 'lib/leaflet.controls.raise-on-focus';
import getLayers from 'layers';
+import 'lib/leaflet.control.layers.events';
diff --git a/src/lib/leaflet.control.caption/index.js b/src/lib/leaflet.control.caption/index.js
@@ -1,5 +1,6 @@
import L from 'leaflet';
import './style.css';
+import 'lib/leaflet.control.commons';
L.Control.Caption = L.Control.extend({
options: {
@@ -14,10 +15,8 @@ L.Control.Caption = L.Control.extend({
onAdd: function (map) {
this._container = L.DomUtil.create('div', this.options.className);
+ this._stopContainerEvents();
this._container.innerHTML = this._contents;
- if (L.DomEvent) {
- L.DomEvent.disableClickPropagation(this._container);
- }
return this._container;
}
diff --git a/src/lib/leaflet.control.commons/index.js b/src/lib/leaflet.control.commons/index.js
@@ -0,0 +1,14 @@
+import L from 'leaflet';
+
+L.Control.include({
+ _stopContainerEvents: function() {
+ const container = this._container;
+ L.DomEvent.disableClickPropagation(container);
+ if (!L.Browser.touch) {
+ L.DomEvent.disableScrollPropagation(container);
+ } else {
+ L.DomEvent.on(container, 'mousemove', L.DomEvent.stop);
+ }
+
+ }
+});
diff --git a/src/lib/leaflet.control.coordinates/index.js b/src/lib/leaflet.control.coordinates/index.js
@@ -2,6 +2,7 @@ import L from 'leaflet'
import './coordinates.css';
import copyToClipboard from 'lib/clipboardCopy';
import Contextmenu from 'lib/contextmenu';
+import 'lib/leaflet.control.commons';
function pad(s, n) {
var j = s.indexOf('.');
@@ -23,15 +24,11 @@ L.Control.Coordinates = L.Control.extend({
onAdd: function(map) {
this._map = map;
var container = this._container = L.DomUtil.create('div', 'leaflet-control leaflet-control-button leaflet-control-coordinates');
- L.DomEvent.disableClickPropagation(container);
- if (!L.Browser.touch) {
- L.DomEvent.disableScrollPropagation(container);
- }
+ this._stopContainerEvents();
this._field_lat = L.DomUtil.create('div', 'leaflet-control-coordinates-text', container);
this._field_lon = L.DomUtil.create('div', 'leaflet-control-coordinates-text', container);
L.DomEvent
.on(container, {
- 'dblclick': L.DomEvent.stop,
'click': this.onClick
}, this);
map.on('mousemove', this.onMouseMove, this);
diff --git a/src/lib/leaflet.control.elevation-profile/index.js b/src/lib/leaflet.control.elevation-profile/index.js
@@ -2,6 +2,7 @@ import L from 'leaflet';
import './elevation-profile.css';
import {fetch} from 'lib/xhr-promise';
import config from 'config';
+import 'lib/leaflet.control.commons';
function createSvg(tagName, attributes, parent) {
var element = document.createElementNS('http://www.w3.org/2000/svg', tagName);
@@ -218,13 +219,7 @@ L.Control.ElevationProfile = L.Class.extend({
addTo: function(map) {
this._map = map;
var container = this._container = L.DomUtil.create('div', 'elevation-profile-container');
- if (!L.Browser.touch) {
- L.DomEvent
- .disableClickPropagation(container)
- .disableScrollPropagation(container);
- } else {
- L.DomEvent.on(container, 'click', L.DomEvent.stopPropagation);
- }
+ L.Control.prototype._stopContainerEvents.call(this);
this._map._controlContainer.appendChild(container);
this.setupContainerLayout();
this.updateGraph();
diff --git a/src/lib/leaflet.control.layers.events/index.js b/src/lib/leaflet.control.layers.events/index.js
@@ -0,0 +1,25 @@
+import L from 'leaflet';
+import 'lib/leaflet.control.commons';
+
+const originalLayerOnAdd = L.Control.Layers.prototype.onAdd;
+
+L.Control.Layers.include({
+ onAdd: function(map) {
+ const container = originalLayerOnAdd.call(this, map);
+ this._stopContainerEvents();
+ return container;
+
+ }
+});
+
+const originalZoomOnAdd = L.Control.Zoom.prototype.onAdd;
+
+L.Control.Zoom.include({
+ onAdd: function(map) {
+ const container = originalZoomOnAdd.call(this, map);
+ this._container = container;
+ this._stopContainerEvents();
+ return container;
+
+ }
+});
diff --git a/src/lib/leaflet.control.panoramas/index.js b/src/lib/leaflet.control.panoramas/index.js
@@ -3,6 +3,7 @@ import './style.css';
import 'lib/controls-styles/controls-styles.css';
import getGoogle from 'lib/googleMapsApi';
import 'lib/leaflet.hashState/leaflet.hashState';
+import 'lib/leaflet.control.commons';
L.Control.Panoramas = L.Control.extend({
includes: L.Mixin.Events,
@@ -25,12 +26,9 @@ L.Control.Panoramas = L.Control.extend({
onAdd: function(map) {
this._map = map;
- const container = L.DomUtil.create('a', 'leaflet-control leaflet-control-button leaflet-contol-panoramas');
+ const container = this._container = L.DomUtil.create('a', 'leaflet-control leaflet-control-button leaflet-contol-panoramas');
+ this._stopContainerEvents();
container.title = 'Show panoramas';
- L.DomEvent.disableClickPropagation(container);
- if (!L.Browser.touch) {
- L.DomEvent.disableScrollPropagation(container);
- }
L.DomEvent.on(container, 'click', this.onButtonClick, this);
map.createPane('rasterOverlay').style.zIndex = 300;
diff --git a/src/lib/leaflet.control.printPages/control.js b/src/lib/leaflet.control.printPages/control.js
@@ -12,6 +12,7 @@ import {makePdf} from './pdf';
import {saveAs} from 'browser-filesaver';
import {blobFromString} from 'lib/binary-strings';
import 'lib/leaflet.hashState/leaflet.hashState';
+import 'lib/leaflet.control.commons';
ko.extenders.checkNumberRange = function(target, range) {
return ko.pureComputed({
@@ -87,10 +88,7 @@ L.Control.PrintPages = L.Control.extend({
this._map = map;
const container = this._container =
L.DomUtil.create('div', 'leaflet-control control-form control-print-pages');
- L.DomEvent.disableClickPropagation(container);
- if (!L.Browser.touch) {
- L.DomEvent.disableScrollPropagation(container);
- }
+ this._stopContainerEvents();
map.on('move', this.updateFormZooms, this);
container.innerHTML = formHtml;
diff --git a/src/lib/leaflet.control.track-list/control-ruler.js b/src/lib/leaflet.control.track-list/control-ruler.js
@@ -3,6 +3,7 @@ import './track-list';
import './ruler.css';
import 'lib/controls-styles/controls-styles.css';
import './track-list';
+import 'lib/leaflet.control.commons';
L.Control.TrackList.Ruler = L.Control.extend({
options: {
@@ -16,11 +17,8 @@ L.Control.TrackList.Ruler = L.Control.extend({
onAdd: function(map) {
this._map = map;
- const container = L.DomUtil.create('div', 'leaflet-control leaflet-control-button leaflet-control-ruler');
- L.DomEvent.disableClickPropagation(container);
- if (!L.Browser.touch) {
- L.DomEvent.disableScrollPropagation(container);
- }
+ const container = this._container = L.DomUtil.create('div', 'leaflet-control leaflet-control-button leaflet-control-ruler');
+ this._stopContainerEvents();
L.DomEvent.on(container, 'click', this.onClick, this);
return container;
},
diff --git a/src/lib/leaflet.control.track-list/track-list.js b/src/lib/leaflet.control.track-list/track-list.js
@@ -17,6 +17,7 @@ import 'lib/leaflet.lineutil.simplifyLatLngs';
import iconFromBackgroundImage from 'lib/iconFromBackgroundImage';
import 'lib/controls-styles/controls-styles.css';
import 'lib/leaflet.control.elevation-profile';
+import 'lib/leaflet.control.commons';
var MeasuredEditableLine = L.MeasuredLine.extend({});
MeasuredEditableLine.include(L.Polyline.EditMixin);
@@ -42,10 +43,7 @@ L.Control.TrackList = L.Control.extend({
this.map = map;
this.tracks.removeAll();
var container = this._container = L.DomUtil.create('div', 'leaflet-control leaflet-control-tracklist');
- L.DomEvent.disableClickPropagation(container);
- if (!L.Browser.touch) {
- L.DomEvent.disableScrollPropagation(container);
- }
+ this._stopContainerEvents();
container.innerHTML = `
<div class="leaflet-control-button-toggle" data-bind="click: setExpanded"></div>