diff --git a/term.ts b/term.ts index 705d35a..f9535ef 100644 --- a/term.ts +++ b/term.ts @@ -258,6 +258,11 @@ export async function createTerm(options: TermOptions): Promise { width = w; height = h; native.update(w, h); + prev = new Set(); + pressed = new Set(); + wasDown = false; + lastRenderAt = undefined; + wasAnimating = false; }, }; } diff --git a/test/term.test.ts b/test/term.test.ts index 99d048c..c35727b 100644 --- a/test/term.test.ts +++ b/test/term.test.ts @@ -396,6 +396,22 @@ describe("term", () => { expect(term.render(frame).output.length).toBe(0); }); + it("discards pointer interaction state on resize", () => { + let pointer = { x: 1, y: 0, down: false }; + let first = term.render(frame, { pointer }); + expect(first.events).toEqual([ + { type: "pointerenter", id: "Clay__RootContainer" }, + { type: "pointerenter", id: "root" }, + ]); + expect(term.render(frame, { pointer }).events).toEqual([]); + term.update({ width: 20, height: 5 }); + let after = term.render(frame, { pointer }); + expect(after.events).toEqual([ + { type: "pointerenter", id: "Clay__RootContainer" }, + { type: "pointerenter", id: "root" }, + ]); + }); + it("resizes in place and lays out at the new dimensions", () => { term.render(frame); term.update({ width: 12, height: 4 });