From 91c08ed48e66722352f623a2029ac5c007cba621 Mon Sep 17 00:00:00 2001 From: Daniel Imms <2193314+Tyriar@users.noreply.github.com> Date: Wed, 2 Aug 2023 11:30:43 -0700 Subject: [PATCH] Fix clear leaving viewport in a bad state Fixes #4603 --- src/browser/Terminal.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/browser/Terminal.ts b/src/browser/Terminal.ts index c4f8f26e..f0ce4694 100644 --- a/src/browser/Terminal.ts +++ b/src/browser/Terminal.ts @@ -1230,8 +1230,11 @@ export class Terminal extends CoreTerminal implements ITerminal { for (let i = 1; i < this.rows; i++) { this.buffer.lines.push(this.buffer.getBlankLine(DEFAULT_ATTR_DATA)); } - this.refresh(0, this.rows - 1); + // IMPORTANT: Fire scroll event before viewport is reset. This ensures embedders get the clear + // scroll event and that the viewport's state will be valid for immediate writes. this._onScroll.fire({ position: this.buffer.ydisp, source: ScrollSource.TERMINAL }); + this.viewport?.reset(); + this.refresh(0, this.rows - 1); } /**