loleaflet/build/deps.js | 3 - loleaflet/src/layer/vector/Path.Popup.js | 72 +++++++++++++++++++++++++++++++ loleaflet/src/layer/vector/SVG.js | 21 +++++++++ 3 files changed, 95 insertions(+), 1 deletion(-)
New commits: commit 44c3d5dfdec440164abbae9833fe9a7b6a96aa0f Author: Henry Castro <hcas...@collabora.com> Date: Wed Sep 14 19:22:31 2016 -0400 loleaflet: add Path.Popup diff --git a/loleaflet/build/deps.js b/loleaflet/build/deps.js index cb83325..58a2ff1 100644 --- a/loleaflet/build/deps.js +++ b/loleaflet/build/deps.js @@ -119,7 +119,8 @@ var deps = { Path: { src: [ 'layer/vector/Renderer.js', - 'layer/vector/Path.js' + 'layer/vector/Path.js', + 'layer/vector/Path.Popup.js' ], desc: 'Vector rendering core.', heading: 'Vector layers' diff --git a/loleaflet/src/layer/vector/Path.Popup.js b/loleaflet/src/layer/vector/Path.Popup.js new file mode 100644 index 0000000..a3dcef5 --- /dev/null +++ b/loleaflet/src/layer/vector/Path.Popup.js @@ -0,0 +1,72 @@ +/* + * Popup extension to L.Path (polylines, polygons, circles), adding popup-related methods. + */ + +L.Path.include({ + + bindPopup: function (content, options) { + + if (content instanceof L.Popup) { + this._popup = content; + } else { + if (!this._popup || options) { + this._popup = new L.Popup(options, this); + } + this._popup.setContent(content); + } + + if (!this._popupHandlersAdded) { + this.on({ + mouseover: this._openPopup, + mouseout: this._delayClose, + remove: this.closePopup, + add: this.firstPopup + }); + + this._popupHandlersAdded = true; + } + + return this; + }, + + unbindPopup: function () { + if (this._popup) { + this._popup = null; + this.off({ + mouseover: this._openPopup, + mouseout: this._delayClose, + remove: this.closePopup, + add: this.firstPopup + }); + + this._popupHandlersAdded = false; + } + return this; + }, + + firstPopup: function (e) { + if (this._popup) { + this._openPopup({latlng: this._bounds.getCenter()}); + } + }, + + closePopup: function () { + if (this._popup) { + this._popup._close(); + } + return this; + }, + + _delayClose: function () { + clearTimeout(this._timer); + this._timer = setTimeout(L.bind(this.closePopup, this), 3000); + }, + + _openPopup: function (e) { + if (!this._map.hasLayer(this._popup)) { + this._popup.setLatLng(e.latlng); + this._map.openPopup(this._popup); + this._delayClose(); + } + } +}); diff --git a/loleaflet/src/layer/vector/SVG.js b/loleaflet/src/layer/vector/SVG.js index 3b203df..9d0affb 100644 --- a/loleaflet/src/layer/vector/SVG.js +++ b/loleaflet/src/layer/vector/SVG.js @@ -45,11 +45,32 @@ L.SVG = L.Renderer.extend({ if (layer.options.interactive) { L.DomUtil.addClass(path, 'leaflet-interactive'); + + var events = ['mouseenter', 'mouseout']; + for (var i = 0; i < events.length; i++) { + L.DomEvent.on(path, events[i], this._fireMouseEvent, this); + } } this._updateStyle(layer); }, + _fireMouseEvent: function (e) { + if (!this._map || !this.hasEventListeners(e.type)) { return; } + + var map = this._map, + containerPoint = map.mouseEventToContainerPoint(e), + layerPoint = map.containerPointToLayerPoint(containerPoint), + latlng = map.layerPointToLatLng(layerPoint); + + this.fire(e.type, { + latlng: latlng, + layerPoint: layerPoint, + containerPoint: containerPoint, + originalEvent: e + }); + }, + _addPath: function (layer) { this._container.appendChild(layer._path); layer.addInteractiveTarget(layer._path); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits