mirror of
https://github.com/Leaflet/Leaflet.git
synced 2025-08-16 16:45:22 +00:00
Fix canvas not filtering click event after drag (#4493)
* Fix preclick not fired in canvas * Do not add canvas layers to click event targets if just dragged (fix #4458)
This commit is contained in:

committed by
Vladimir Agafonkin

parent
bb7d23d7a0
commit
95d5b59c5f
@ -73,6 +73,51 @@ describe('Canvas', function () {
|
||||
map.off("click", spy);
|
||||
});
|
||||
|
||||
it("should fire preclick before click", function () {
|
||||
var clickSpy = sinon.spy();
|
||||
var preclickSpy = sinon.spy();
|
||||
layer.on('click', clickSpy);
|
||||
layer.on('preclick', preclickSpy);
|
||||
layer.once('preclick', function (e) {
|
||||
expect(clickSpy.called).to.be(false);
|
||||
});
|
||||
happen.at('click', 50, 50); // Click on the layer.
|
||||
expect(clickSpy.callCount).to.eql(1);
|
||||
expect(preclickSpy.callCount).to.eql(1);
|
||||
happen.at('click', 150, 150); // Click outside layer.
|
||||
expect(clickSpy.callCount).to.eql(1);
|
||||
expect(preclickSpy.callCount).to.eql(1);
|
||||
layer.off();
|
||||
});
|
||||
|
||||
it("should not fire click when dragging the map on top of it", function (done) {
|
||||
var downSpy = sinon.spy();
|
||||
var clickSpy = sinon.spy();
|
||||
var preclickSpy = sinon.spy();
|
||||
layer.on('click', clickSpy);
|
||||
layer.on('preclick', preclickSpy);
|
||||
layer.on('mousedown', downSpy);
|
||||
var hand = new Hand({
|
||||
timing: 'fastframe',
|
||||
onStop: function () {
|
||||
// Prosthetic does not fire a click when we down+up, but it real world
|
||||
// browsers would, so let's simulate it.
|
||||
happen.at('click', 70, 60);
|
||||
expect(downSpy.called).to.be(true);
|
||||
expect(clickSpy.called).to.be(false);
|
||||
expect(preclickSpy.called).to.be(false);
|
||||
layer.off();
|
||||
done();
|
||||
}
|
||||
});
|
||||
var mouse = hand.growFinger('mouse');
|
||||
|
||||
// We move 5 pixels first to overcome the 3-pixel threshold of
|
||||
// L.Draggable.
|
||||
mouse.moveTo(50, 50, 0)
|
||||
.down().moveBy(20, 10, 200).up();
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
describe("#events(interactive=false)", function () {
|
||||
|
Reference in New Issue
Block a user