diff --git a/src/ol/MapBrowserEventHandler.js b/src/ol/MapBrowserEventHandler.js index 0e98553633..a8878986ff 100644 --- a/src/ol/MapBrowserEventHandler.js +++ b/src/ol/MapBrowserEventHandler.js @@ -137,7 +137,7 @@ class MapBrowserEventHandler extends EventTarget { pointerEvent ); this.dispatchEvent(newEvent); - } else { + } else if (this.activePointers_ === 0) { // click this.clickTimeoutId_ = setTimeout( /** @this {MapBrowserEventHandler} */ diff --git a/test/spec/ol/MapBrowserEventHandler.test.js b/test/spec/ol/MapBrowserEventHandler.test.js index f518b0a38f..7039f329fd 100644 --- a/test/spec/ol/MapBrowserEventHandler.test.js +++ b/test/spec/ol/MapBrowserEventHandler.test.js @@ -82,6 +82,26 @@ describe('ol/MapBrowserEventHandler', function () { expect(singleclickSpy.called).to.not.be.ok(); expect(dblclickSpy.calledOnce).to.be.ok(); }); + + it('does not emulate dblclick when multiple pointers are involved', function () { + const event = new Event(); + event.type = 'pointerdown'; + event.target = target; + event.clientX = 0; + event.clientY = 0; + handler.activePointers_ = 1; + handler.emulateClick_(event); + expect(singleclickSpy.called).to.not.be.ok(); + expect(dblclickSpy.called).to.not.be.ok(); + + handler.emulateClick_(event); + expect(singleclickSpy.called).to.not.be.ok(); + expect(dblclickSpy.called).to.not.be.ok(); + + clock.tick(250); + expect(singleclickSpy.called).to.not.be.ok(); + expect(dblclickSpy.called).to.not.be.ok(); + }); }); describe('#down_', function () {