Close non permanent tooltip on map click on touch (fix #4741)
This commit is contained in:
parent
71d3bc02e5
commit
a0ee68558f
@ -253,5 +253,30 @@ describe('Tooltip', function () {
|
||||
expect(map.hasLayer(layer._tooltip)).to.be(true);
|
||||
});
|
||||
|
||||
it("is opened when tapping on touch", function () {
|
||||
var oldTouch = L.Browser.touch;
|
||||
L.Browser.touch = true;
|
||||
var layer = new L.Marker(center).addTo(map);
|
||||
|
||||
layer.bindTooltip('Tooltip');
|
||||
expect(map.hasLayer(layer._tooltip)).to.be(false);
|
||||
happen.click(layer._icon);
|
||||
expect(map.hasLayer(layer._tooltip)).to.be(true);
|
||||
L.Browser.touch = oldTouch;
|
||||
});
|
||||
|
||||
it("is closed if not permanent when clicking on the map elsewhere on touch", function () {
|
||||
var oldTouch = L.Browser.touch;
|
||||
L.Browser.touch = true;
|
||||
var layer = new L.Marker(center).addTo(map);
|
||||
|
||||
layer.bindTooltip('Tooltip');
|
||||
happen.click(layer._icon);
|
||||
expect(map.hasLayer(layer._tooltip)).to.be(true);
|
||||
happen.click(map._container);
|
||||
expect(map.hasLayer(layer._tooltip)).to.be(false);
|
||||
L.Browser.touch = oldTouch;
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
|
@ -94,6 +94,16 @@ L.Tooltip = L.DivOverlay.extend({
|
||||
}
|
||||
},
|
||||
|
||||
getEvents: function () {
|
||||
var events = L.DivOverlay.prototype.getEvents.call(this);
|
||||
|
||||
if (L.Browser.touch && !this.options.permanent) {
|
||||
events.preclick = this._close;
|
||||
}
|
||||
|
||||
return events;
|
||||
},
|
||||
|
||||
_close: function () {
|
||||
if (this._map) {
|
||||
this._map.closeTooltip(this);
|
||||
|
Loading…
Reference in New Issue
Block a user