Fix tests, collect click events and fire after pointerup

This commit is contained in:
Justin Covell 2023-02-15 09:31:19 -08:00
parent 8e820f2be4
commit 615f35c804

View File

@ -662,6 +662,7 @@ export class Stage extends Container<Layer> {
const clickEndShape = this[eventType + 'ClickEndShape']; const clickEndShape = this[eventType + 'ClickEndShape'];
var processedShapesIds = {}; var processedShapesIds = {};
let triggeredOnShape = false; let triggeredOnShape = false;
const stageClickEvents = [];
this._changedPointerPositions.forEach((pos) => { this._changedPointerPositions.forEach((pos) => {
const shape = (PointerEvents.getCapturedShape(pos.id) || const shape = (PointerEvents.getCapturedShape(pos.id) ||
this.getIntersection(pos)) as Shape; this.getIntersection(pos)) as Shape;
@ -710,34 +711,36 @@ export class Stage extends Container<Layer> {
} }
} else { } else {
this[eventType + 'ClickEndShape'] = null; this[eventType + 'ClickEndShape'] = null;
this._fire(events.pointerup, {
evt: evt,
target: this,
currentTarget: this,
pointerId: pointerId,
});
if (Konva['_' + eventType + 'ListenClick']) { if (Konva['_' + eventType + 'ListenClick']) {
this._fire(events.pointerclick, { stageClickEvents.push([events.pointerclick, {
evt: evt, evt: evt,
target: this, target: this,
currentTarget: this, currentTarget: this,
pointerId, pointerId,
}); }]);
} }
if (fireDblClick) { if (fireDblClick) {
this._fire(events.pointerdblclick, { stageClickEvents.push([events.pointerdblclick, {
evt: evt, evt: evt,
target: this, target: this,
currentTarget: this, currentTarget: this,
pointerId, pointerId,
}); }]);
} }
} }
}); });
if (!triggeredOnShape) {
this._fire(events.pointerup, {
evt: evt,
target: this,
currentTarget: this,
pointerId: this._changedPointerPositions[0].id,
});
stageClickEvents.forEach(([e, evt]) => this._fire(e, evt))
}
Konva['_' + eventType + 'ListenClick'] = false; Konva['_' + eventType + 'ListenClick'] = false;
// always call preventDefault for desktop events because some browsers // always call preventDefault for desktop events because some browsers