From ff14d2000c576cdc782cab2802f56ddccf22c732 Mon Sep 17 00:00:00 2001 From: meganrogge Date: Tue, 15 Jun 2021 14:54:16 -0700 Subject: [PATCH] clean up --- .../terminal/browser/media/terminal.css | 19 ++++++++++----- .../contrib/terminal/browser/terminal.ts | 1 - .../terminal/browser/terminalEditor.ts | 23 ++++++++----------- .../terminal/browser/terminalEditorInput.ts | 7 ++---- .../terminal/browser/terminalInstance.ts | 10 -------- 5 files changed, 25 insertions(+), 35 deletions(-) diff --git a/src/vs/workbench/contrib/terminal/browser/media/terminal.css b/src/vs/workbench/contrib/terminal/browser/media/terminal.css index ee782fc20f4..8e31bb1e068 100644 --- a/src/vs/workbench/contrib/terminal/browser/media/terminal.css +++ b/src/vs/workbench/contrib/terminal/browser/media/terminal.css @@ -39,27 +39,34 @@ position: absolute; top: 0; } -.monaco-workbench .terminal-group .monaco-split-view2.horizontal .split-view-view:first-child .terminal-wrapper { + +.monaco-workbench .editor-instance .terminal-group .monaco-split-view2.horizontal .split-view-view:first-child .terminal-wrapper, +.monaco-workbench .pane-body.integrated-terminal .terminal-group .monaco-split-view2.horizontal .split-view-view:first-child .terminal-wrapper { margin-left: 20px; } -.monaco-workbench .terminal-group .monaco-split-view2.horizontal .split-view-view:last-child .terminal-wrapper { +.monaco-workbench .editor-instance .terminal-group .monaco-split-view2.horizontal .split-view-view:last-child .terminal-wrapper, +.monaco-workbench .pane-body.integrated-terminal .terminal-group .monaco-split-view2.horizontal .split-view-view:last-child .terminal-wrapper { margin-right: 20px; } -.monaco-workbench .xterm a:not(.xterm-invalid-link) { +.monaco-workbench .editor-instance .xterm a:not(.xterm-invalid-link), +.monaco-workbench .pane-body.integrated-terminal .xterm a:not(.xterm-invalid-link) { /* To support message box sizing */ position: relative; } -.monaco-workbench .terminal-wrapper > div { +.monaco-workbench .editor-instance .terminal-wrapper > div, +.monaco-workbench .pane-body.integrated-terminal .terminal-wrapper > div { height: 100%; } -.monaco-workbench .xterm-viewport { +.monaco-workbench .editor-instance .xterm-viewport, +.monaco-workbench .pane-body.integrated-terminal .xterm-viewport { box-sizing: border-box; margin-right: -10px; } -.monaco-workbench .terminal-group .monaco-split-view2.horizontal .split-view-view:last-child .xterm-viewport { +.monaco-workbench .editor-instance .terminal-group .monaco-split-view2.horizontal .split-view-view:last-child .xterm-viewport, +.monaco-workbench .pane-body.integrated-terminal .terminal-group .monaco-split-view2.horizontal .split-view-view:last-child .xterm-viewport { margin-right: -20px; } diff --git a/src/vs/workbench/contrib/terminal/browser/terminal.ts b/src/vs/workbench/contrib/terminal/browser/terminal.ts index 15e79205af9..d9399ea3f65 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminal.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminal.ts @@ -102,7 +102,6 @@ export interface ICreateTerminalOptions { * profile will be used. */ config?: IShellLaunchConfig | ITerminalProfile; - // TODO: Ensure this is supported for profiles /** * The current working directory to start with, this will override IShellLaunchConfig.cwd if * specified. diff --git a/src/vs/workbench/contrib/terminal/browser/terminalEditor.ts b/src/vs/workbench/contrib/terminal/browser/terminalEditor.ts index 1cc58b5e3b1..f070dd7776a 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalEditor.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalEditor.ts @@ -20,10 +20,19 @@ export class TerminalEditor extends EditorPane { public static readonly ID = 'terminalEditor'; private _parentElement: HTMLElement | undefined; + private _editorInput?: TerminalEditorInput = undefined; private _lastDimension?: Dimension; + constructor( + @ITelemetryService telemetryService: ITelemetryService, + @IThemeService themeService: IThemeService, + @IStorageService storageService: IStorageService, + ) { + super(TerminalEditor.ID, telemetryService, themeService, storageService); + } + override async setInput(newInput: TerminalEditorInput, options: IEditorOptions | undefined, context: IEditorOpenContext, token: CancellationToken) { this._editorInput?.terminalInstance?.detachFromElement(); this._editorInput = newInput; @@ -49,21 +58,9 @@ export class TerminalEditor extends EditorPane { override setVisible(visible: boolean, group?: IEditorGroup): void { super.setVisible(visible, group); - - if (!this._editorInput?.terminalInstance) { - return; - } - - this._editorInput.terminalInstance.setVisible(visible); + return this._editorInput?.terminalInstance?.setVisible(visible); } - constructor( - @ITelemetryService telemetryService: ITelemetryService, - @IThemeService themeService: IThemeService, - @IStorageService storageService: IStorageService, - ) { - super(TerminalEditor.ID, telemetryService, themeService, storageService); - } } export class TerminalInputSerializer implements IEditorInputSerializer { diff --git a/src/vs/workbench/contrib/terminal/browser/terminalEditorInput.ts b/src/vs/workbench/contrib/terminal/browser/terminalEditorInput.ts index 9e814bb8761..05d1c0c5f98 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalEditorInput.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalEditorInput.ts @@ -3,6 +3,7 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ +import { toDisposable } from 'vs/base/common/lifecycle'; import { URI } from 'vs/base/common/uri'; import { EditorInput } from 'vs/workbench/common/editor/editorInput'; import { ITerminalInstance } from 'vs/workbench/contrib/terminal/browser/terminal'; @@ -31,14 +32,10 @@ export class TerminalEditorInput extends EditorInput { super(); this._terminalInstance = terminalInstance; this._terminalInstance.onTitleChanged(() => this._onDidChangeLabel.fire()); + this._register(toDisposable(() => this.terminalInstance.dispose())); } override getName() { return this.terminalInstance.title; } - - override dispose() { - this.terminalInstance.dispose(); - super.dispose(); - } } diff --git a/src/vs/workbench/contrib/terminal/browser/terminalInstance.ts b/src/vs/workbench/contrib/terminal/browser/terminalInstance.ts index 5296314beb3..292d3e55658 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalInstance.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalInstance.ts @@ -629,16 +629,6 @@ export class TerminalInstance extends Disposable implements ITerminalInstance { return xterm; } - reattachToElement(container: HTMLElement): void { - if (!this._wrapperElement) { - throw new Error('The terminal instance has not been attached to a container yet'); - } - - this._wrapperElement.parentNode?.removeChild(this._wrapperElement); - this._container = container; - this._container.appendChild(this._wrapperElement); - } - detachFromElement(): void { this._wrapperElement?.parentNode?.removeChild(this._wrapperElement); this._wrapperElement = undefined;