From 615f35c8049e36127c7da51dd947daf01ffe4d99 Mon Sep 17 00:00:00 2001 From: Justin Covell Date: Wed, 15 Feb 2023 09:31:19 -0800 Subject: [PATCH] Fix tests, collect click events and fire after pointerup --- src/Stage.ts | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/src/Stage.ts b/src/Stage.ts index 5885e8c5..d4caa514 100644 --- a/src/Stage.ts +++ b/src/Stage.ts @@ -662,6 +662,7 @@ export class Stage extends Container { const clickEndShape = this[eventType + 'ClickEndShape']; var processedShapesIds = {}; let triggeredOnShape = false; + const stageClickEvents = []; this._changedPointerPositions.forEach((pos) => { const shape = (PointerEvents.getCapturedShape(pos.id) || this.getIntersection(pos)) as Shape; @@ -710,34 +711,36 @@ export class Stage extends Container { } } else { this[eventType + 'ClickEndShape'] = null; - - this._fire(events.pointerup, { - evt: evt, - target: this, - currentTarget: this, - pointerId: pointerId, - }); - if (Konva['_' + eventType + 'ListenClick']) { - this._fire(events.pointerclick, { + stageClickEvents.push([events.pointerclick, { evt: evt, target: this, currentTarget: this, pointerId, - }); + }]); } if (fireDblClick) { - this._fire(events.pointerdblclick, { + stageClickEvents.push([events.pointerdblclick, { evt: evt, target: this, currentTarget: this, 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; // always call preventDefault for desktop events because some browsers