diff --git a/src/vs/workbench/contrib/terminal/browser/terminal.ts b/src/vs/workbench/contrib/terminal/browser/terminal.ts index f44ee191cba57..ed52d9e80fdcc 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminal.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminal.ts @@ -102,6 +102,7 @@ export interface ITerminalService { onDidRegisterProcessSupport: Event; onDidChangeConnectionState: Event; onProfilesConfigChanged: Event; + onPanelMovedToSide: Event; /** * Creates a terminal. diff --git a/src/vs/workbench/contrib/terminal/browser/terminalService.ts b/src/vs/workbench/contrib/terminal/browser/terminalService.ts index ae23d621855fb..5e4e0b6689ee4 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalService.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalService.ts @@ -114,6 +114,8 @@ export class TerminalService implements ITerminalService { public get connectionState(): TerminalConnectionState { return this._connectionState; } private readonly _onProfilesConfigChanged = new Emitter(); public get onProfilesConfigChanged(): Event { return this._onProfilesConfigChanged.event; } + private readonly _onPanelMovedToSide = new Emitter(); + public get onPanelMovedToSide(): Event { return this._onPanelMovedToSide.event; } private readonly _localTerminalService?: ILocalTerminalService; constructor( @@ -974,6 +976,7 @@ export class TerminalService implements ITerminalService { const terminalTab = this._instantiationService.createInstance(TerminalTab, this._terminalContainer, shellLaunchConfig); this._terminalTabs.push(terminalTab); + terminalTab.onPanelMovedToSide(() => this._onPanelMovedToSide.fire()); const instance = terminalTab.terminalInstances[0]; diff --git a/src/vs/workbench/contrib/terminal/browser/terminalTab.ts b/src/vs/workbench/contrib/terminal/browser/terminalTab.ts index 0f089c7c3daac..08a0b5b8638f5 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalTab.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalTab.ts @@ -246,6 +246,8 @@ export class TerminalTab extends Disposable implements ITerminalTab { public readonly onDisposed: Event = this._onDisposed.event; private readonly _onInstancesChanged: Emitter = this._register(new Emitter()); public readonly onInstancesChanged: Event = this._onInstancesChanged.event; + private readonly _onPanelMovedToSide = new Emitter(); + public get onPanelMovedToSide(): Event { return this._onPanelMovedToSide.event; } constructor( private _container: HTMLElement | undefined, shellLaunchConfigOrInstance: IShellLaunchConfig | ITerminalInstance | undefined, @@ -465,6 +467,9 @@ export class TerminalTab extends Disposable implements ITerminalTab { this.resizePanes(this._initialRelativeSizes); this._initialRelativeSizes = undefined; } + if (terminalPositionChanged && this._splitPaneContainer.orientation === Orientation.VERTICAL) { + this._onPanelMovedToSide.fire(); + } } } diff --git a/src/vs/workbench/contrib/terminal/browser/terminalTabbedView.ts b/src/vs/workbench/contrib/terminal/browser/terminalTabbedView.ts index b6665d3f0f4e1..212dd65a6e181 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalTabbedView.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalTabbedView.ts @@ -139,6 +139,13 @@ export class TerminalTabbedView extends Disposable { this._splitView = new SplitView(parentElement, { orientation: Orientation.HORIZONTAL, proportionalLayout: false }); this._setupSplitView(); + + this._terminalService.onPanelMovedToSide(() => { + try { + this._updateWidgetWidth(MIN_TABS_WIDGET_WIDTH); + } catch (e) { + } + }); } private _getLastWidgetWidth(): number { @@ -203,7 +210,7 @@ export class TerminalTabbedView extends Disposable { } private _updateWidgetWidth(width: number): void { - if (width < MIDPOINT_WIDGET_WIDTH && width > MIN_TABS_WIDGET_WIDTH) { + if (width < MIDPOINT_WIDGET_WIDTH && width >= MIN_TABS_WIDGET_WIDTH) { width = MIN_TABS_WIDGET_WIDTH; this._splitView.resizeView(this._tabTreeIndex, width); } else if (width >= MIDPOINT_WIDGET_WIDTH && width < DEFAULT_TABS_WIDGET_WIDTH) { @@ -293,7 +300,8 @@ export class TerminalTabbedView extends Disposable { } private _refreshHasTextClass() { - this._tabTreeContainer.classList.toggle('has-text', this._tabTreeContainer.clientWidth >= MIDPOINT_WIDGET_WIDTH); + this._tabTreeContainer.classList.toggle('has-text', this._tabTreeContainer.clientWidth > MIDPOINT_WIDGET_WIDTH); + console.log('has text', this._tabTreeContainer.classList.contains('has-text')); } private _updateTheme(theme?: IColorTheme): void {