MapBrowserEvent#preventDefault() behaves the same as with native events

This commit is contained in:
Andreas Hocevar
2021-04-05 10:04:20 +02:00
parent 1cb89ab991
commit 0da0c903a0
5 changed files with 14 additions and 8 deletions

View File

@@ -204,7 +204,7 @@ class MapBrowserEventHandler extends Target {
// event.stopPropagation() or event.preventDefault().
if (
this.emulateClicks_ &&
!newEvent.propagationStopped &&
!newEvent.defaultPrevented &&
!this.dragging_ &&
this.isMouseActionButton_(pointerEvent)
) {

View File

@@ -22,6 +22,11 @@ class BaseEvent {
*/
this.propagationStopped;
/**
* @type {boolean}
*/
this.defaultPrevented;
/**
* The event type.
* @type {string}
@@ -38,11 +43,12 @@ class BaseEvent {
}
/**
* Stop event propagation.
* Prevent default. This means that no emulated `click`, `singleclick` or `doubleclick` events
* will be fired.
* @api
*/
preventDefault() {
this.propagationStopped = true;
this.defaultPrevented = true;
}
/**

View File

@@ -650,7 +650,7 @@ class Draw extends PointerInteraction {
}
if (!pass && this.stopClick_) {
event.stopPropagation();
event.preventDefault();
}
return pass;
}

View File

@@ -16,10 +16,10 @@ describe('ol.events.Event', function () {
});
describe('#preventDefault', function () {
it('sets the propagationStopped flag', function () {
it('sets the defaultPrevented flag', function () {
const event = new Event('foo');
event.preventDefault();
expect(event.propagationStopped).to.be(true);
expect(event.defaultPrevented).to.be(true);
});
it('does the same as #stopPropagation', function () {
const event = new Event('foo');

View File

@@ -105,10 +105,10 @@ describe('ol.events.EventTarget', function () {
eventTarget.dispatchEvent('foo');
expect(called).to.eql([1, 2]);
});
it('stops propagation when listeners call preventDefault()', function () {
it('stops propagation when listeners call stopPropagation()', function () {
eventTarget.addEventListener('foo', function (evt) {
spy2();
evt.preventDefault();
evt.stopPropagation();
});
eventTarget.addEventListener('foo', spy1);
eventTarget.dispatchEvent('foo');