From e2341917a441406a354bae8ebd2fe4e9e70ab5a7 Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Tue, 15 Oct 2019 17:17:43 -0700 Subject: [PATCH] Fix undefined errors with xterm elements Fixes #82622 --- .../terminal/browser/addons/navigationModeAddon.ts | 4 ++-- .../contrib/terminal/browser/terminalInstance.ts | 8 ++++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/vs/workbench/contrib/terminal/browser/addons/navigationModeAddon.ts b/src/vs/workbench/contrib/terminal/browser/addons/navigationModeAddon.ts index 6997a4dbef1..f164db48fb9 100644 --- a/src/vs/workbench/contrib/terminal/browser/addons/navigationModeAddon.ts +++ b/src/vs/workbench/contrib/terminal/browser/addons/navigationModeAddon.ts @@ -30,7 +30,7 @@ export class NavigationModeAddon implements INavigationMode, ITerminalAddon { } focusPreviousLine(): void { - if (!this._terminal) { + if (!this._terminal || !this._terminal.element) { return; } @@ -73,7 +73,7 @@ export class NavigationModeAddon implements INavigationMode, ITerminalAddon { } focusNextLine(): void { - if (!this._terminal) { + if (!this._terminal || !this._terminal.element) { return; } diff --git a/src/vs/workbench/contrib/terminal/browser/terminalInstance.ts b/src/vs/workbench/contrib/terminal/browser/terminalInstance.ts index ec49836256a..c4fdbfb57d2 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalInstance.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalInstance.ts @@ -565,6 +565,10 @@ export class TerminalInstance extends Disposable implements ITerminalInstance { this._container.appendChild(this._wrapperElement); xterm.open(this._xtermElement); + if (!xterm.element || !xterm.textarea) { + throw new Error('xterm elements not set after open'); + } + xterm.textarea.addEventListener('focus', () => this._onFocus.fire(this)); xterm.attachCustomKeyEventHandler((event: KeyboardEvent): boolean => { // Disable all input if the terminal is exiting @@ -1106,7 +1110,7 @@ export class TerminalInstance extends Disposable implements ITerminalInstance { } private _attachPressAnyKeyToCloseListener(xterm: XTermTerminal) { - if (!this._pressAnyKeyToCloseListener) { + if (xterm.textarea && !this._pressAnyKeyToCloseListener) { this._pressAnyKeyToCloseListener = dom.addDisposableListener(xterm.textarea, 'keypress', (event: KeyboardEvent) => { if (this._pressAnyKeyToCloseListener) { this._pressAnyKeyToCloseListener.dispose(); @@ -1309,7 +1313,7 @@ export class TerminalInstance extends Disposable implements ITerminalInstance { return; } - if (this._xterm) { + if (this._xterm && this._xterm.element) { this._xterm.element.style.width = terminalWidth + 'px'; } -- GitLab