fix: ui drag only triggered once (#2577)

This commit is contained in:
AZhan
2025-03-04 11:18:52 +08:00
committed by GitHub
parent 79ce4a651a
commit bf62df763d
2 changed files with 72 additions and 4 deletions

View File

@@ -103,7 +103,6 @@ export class UIPointerEventEmitter extends PointerEventEmitter {
const draggedPath = this._draggedPath;
if (draggedPath.length > 0) {
this._bubble(draggedPath, pointer, this._fireDrag);
draggedPath.length = 0;
}
}

View File

@@ -126,6 +126,75 @@ describe("UIEvent", async () => {
expect(script3.upCount).toBe(0);
expect(script3.dropCount).toBe(0);
target.dispatchEvent(generatePointerEvent("pointermove", 2, left + 5, top + 5));
engine.update();
expect(script1.enterCount).toBe(1);
expect(script1.exitCount).toBe(0);
expect(script1.downCount).toBe(1);
expect(script1.clickCount).toBe(0);
expect(script1.beginDragCount).toBe(1);
expect(script1.dragCount).toBe(1);
expect(script1.endDragCount).toBe(0);
expect(script1.upCount).toBe(0);
expect(script1.dropCount).toBe(0);
expect(script2.enterCount).toBe(1);
expect(script2.exitCount).toBe(0);
expect(script2.downCount).toBe(0);
expect(script2.clickCount).toBe(0);
expect(script2.beginDragCount).toBe(0);
expect(script2.dragCount).toBe(0);
expect(script2.endDragCount).toBe(0);
expect(script2.upCount).toBe(0);
expect(script2.dropCount).toBe(0);
expect(script3.enterCount).toBe(0);
expect(script3.exitCount).toBe(0);
expect(script3.downCount).toBe(0);
expect(script3.clickCount).toBe(0);
expect(script3.beginDragCount).toBe(0);
expect(script3.dragCount).toBe(0);
expect(script3.endDragCount).toBe(0);
expect(script3.upCount).toBe(0);
expect(script3.dropCount).toBe(0);
target.dispatchEvent(generatePointerEvent("pointermove", 2, left + 5, top + 5));
engine.update();
expect(script1.enterCount).toBe(1);
expect(script1.exitCount).toBe(0);
expect(script1.downCount).toBe(1);
expect(script1.clickCount).toBe(0);
expect(script1.beginDragCount).toBe(1);
expect(script1.dragCount).toBe(2);
expect(script1.endDragCount).toBe(0);
expect(script1.upCount).toBe(0);
expect(script1.dropCount).toBe(0);
expect(script2.enterCount).toBe(1);
expect(script2.exitCount).toBe(0);
expect(script2.downCount).toBe(0);
expect(script2.clickCount).toBe(0);
expect(script2.beginDragCount).toBe(0);
expect(script2.dragCount).toBe(0);
expect(script2.endDragCount).toBe(0);
expect(script2.upCount).toBe(0);
expect(script2.dropCount).toBe(0);
expect(script3.enterCount).toBe(0);
expect(script3.exitCount).toBe(0);
expect(script3.downCount).toBe(0);
expect(script3.clickCount).toBe(0);
expect(script3.beginDragCount).toBe(0);
expect(script3.dragCount).toBe(0);
expect(script3.endDragCount).toBe(0);
expect(script3.upCount).toBe(0);
expect(script3.dropCount).toBe(0);
target.dispatchEvent(generatePointerEvent("pointerup", 2, left + 5, top + 5));
engine.update();
@@ -134,7 +203,7 @@ describe("UIEvent", async () => {
expect(script1.downCount).toBe(1);
expect(script1.clickCount).toBe(1);
expect(script1.beginDragCount).toBe(1);
expect(script1.dragCount).toBe(0);
expect(script1.dragCount).toBe(2);
expect(script1.endDragCount).toBe(1);
expect(script1.upCount).toBe(1);
expect(script1.dropCount).toBe(1);
@@ -167,7 +236,7 @@ describe("UIEvent", async () => {
expect(script1.downCount).toBe(1);
expect(script1.clickCount).toBe(1);
expect(script1.beginDragCount).toBe(1);
expect(script1.dragCount).toBe(0);
expect(script1.dragCount).toBe(2);
expect(script1.endDragCount).toBe(1);
expect(script1.upCount).toBe(1);
expect(script1.dropCount).toBe(1);
@@ -199,7 +268,7 @@ describe("UIEvent", async () => {
expect(script1.downCount).toBe(1);
expect(script1.clickCount).toBe(1);
expect(script1.beginDragCount).toBe(1);
expect(script1.dragCount).toBe(0);
expect(script1.dragCount).toBe(2);
expect(script1.endDragCount).toBe(1);
expect(script1.upCount).toBe(1);
expect(script1.dropCount).toBe(1);