diff --git a/src/vs/workbench/contrib/terminal/browser/terminalInstance.ts b/src/vs/workbench/contrib/terminal/browser/terminalInstance.ts index c8604bed74b..510b19348bc 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalInstance.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalInstance.ts @@ -914,7 +914,12 @@ export class TerminalInstance extends Disposable implements ITerminalInstance { this.xterm?.refresh(); - setTimeout(() => this._initDragAndDrop(container)); + setTimeout(() => { + if (this._store.isDisposed) { + return; + } + this._initDragAndDrop(container); + }, 0); } /** diff --git a/src/vs/workbench/contrib/terminal/browser/xterm/xtermTerminal.ts b/src/vs/workbench/contrib/terminal/browser/xterm/xtermTerminal.ts index c7415250eb5..3b5a8c644df 100644 --- a/src/vs/workbench/contrib/terminal/browser/xterm/xtermTerminal.ts +++ b/src/vs/workbench/contrib/terminal/browser/xterm/xtermTerminal.ts @@ -266,6 +266,9 @@ export class XtermTerminal extends Disposable implements IXtermTerminal, IDetach this._shellIntegrationAddon = new ShellIntegrationAddon(options.shellIntegrationNonce ?? '', options.disableShellIntegrationReporting, this._telemetryService, this._logService); this.raw.loadAddon(this._shellIntegrationAddon); this._xtermAddonLoader.importAddon('clipboard').then(ClipboardAddon => { + if (this._store.isDisposed) { + return; + } this._clipboardAddon = this._instantiationService.createInstance(ClipboardAddon, undefined, { async readText(type: ClipboardSelectionType): Promise { return _clipboardService.readText(type === 'p' ? 'selection' : 'clipboard'); @@ -470,6 +473,9 @@ export class XtermTerminal extends Disposable implements IXtermTerminal, IDetach private _getSearchAddon(): Promise { if (!this._searchAddonPromise) { this._searchAddonPromise = this._xtermAddonLoader.importAddon('search').then((AddonCtor) => { + if (this._store.isDisposed) { + return Promise.reject('Could not create search addon, terminal is disposed'); + } this._searchAddon = new AddonCtor({ highlightLimit: XtermTerminalConstants.SearchHighlightLimit }); this.raw.loadAddon(this._searchAddon); this._searchAddon.onDidChangeResults((results: { resultIndex: number; resultCount: number }) => {