diff --git a/src/vs/workbench/contrib/terminal/browser/terminalView.ts b/src/vs/workbench/contrib/terminal/browser/terminalView.ts index 628e1313ba5c..9a7457274151 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalView.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalView.ts @@ -337,13 +337,12 @@ export class TerminalViewPane extends ViewPane { // be focused. So wait for connection to finish, then focus. const previousActiveElement = this.element.ownerDocument.activeElement; if (previousActiveElement) { - // TODO: Improve lifecycle management this event should be disposed after first fire - this._register(this._terminalService.onDidChangeConnectionState(() => { + const listener = this._register(Event.once(this._terminalService.onDidChangeConnectionState)(() => { // Only focus the terminal if the activeElement has not changed since focus() was called - // TODO: Hack if (previousActiveElement && dom.isActiveElement(previousActiveElement)) { this._terminalGroupService.showPanel(true); } + this._store.delete(listener); })); } }