| ... | @@ -196,6 +196,23 @@ describe("showContextMenuFallback", () => { | ... | @@ -196,6 +196,23 @@ describe("showContextMenuFallback", () => { |
| 196 | await expect(selectionPromise).resolves.toBe("rename"); | 196 | await expect(selectionPromise).resolves.toBe("rename"); |
| 197 | }); | 197 | }); |
| 198 | | 198 | |
| | 199 | it("ignores a click from the gesture that opened the menu", async () => { |
| | 200 | let enablePointerSelection: ((time: number) => void) | undefined; |
| | 201 | vi.stubGlobal("requestAnimationFrame", (callback: (time: number) => void) => { |
| | 202 | enablePointerSelection = callback; |
| | 203 | return 0; |
| | 204 | }); |
| | 205 | |
| | 206 | const selectionPromise = showContextMenuFallback([{ id: "rename", label: "Rename" }]); |
| | 207 | const renameButton = findButton("Rename"); |
| | 208 | |
| | 209 | renameButton?.dispatchEvent(new MouseEvent("click", { bubbles: true })); |
| | 210 | enablePointerSelection?.(0); |
| | 211 | renameButton?.dispatchEvent(new MouseEvent("click", { bubbles: true })); |
| | 212 | |
| | 213 | await expect(selectionPromise).resolves.toBe("rename"); |
| | 214 | }); |
| | 215 | |
| 199 | it("opens nested submenus and resolves the clicked leaf id", async () => { | 216 | it("opens nested submenus and resolves the clicked leaf id", async () => { |
| 200 | const selectionPromise = showContextMenuFallback([ | 217 | const selectionPromise = showContextMenuFallback([ |
| 201 | { | 218 | { |