From 462ce94707760fb92315e292055d4e5c8a3cd5a8 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Sat, 12 Jul 2025 20:59:55 +0200 Subject: [PATCH] Add separator between view actions and global panel actions (fix #147903) (#255576) --- src/vs/platform/actions/browser/toolbar.ts | 8 ++++++++ .../workbench/browser/parts/media/paneCompositePart.css | 4 ++++ src/vs/workbench/browser/parts/paneCompositeBar.ts | 2 ++ src/vs/workbench/browser/parts/paneCompositePart.ts | 5 ++++- 4 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/vs/platform/actions/browser/toolbar.ts b/src/vs/platform/actions/browser/toolbar.ts index 5e46b390271..cd1a4276ce0 100644 --- a/src/vs/platform/actions/browser/toolbar.ts +++ b/src/vs/platform/actions/browser/toolbar.ts @@ -301,6 +301,11 @@ export interface IToolBarRenderOptions { * Should the primary group allow for separators. */ useSeparatorsInPrimaryActions?: boolean; + + /** + * Force a leading separator in the primary actions group. + */ + forceLeadingSeparatorInPrimaryActions?: boolean; } export interface IMenuWorkbenchToolBarOptions extends IWorkbenchToolBarOptions { @@ -369,6 +374,9 @@ export class MenuWorkbenchToolBar extends WorkbenchToolBar { options?.toolbarOptions?.primaryGroup, options?.toolbarOptions?.shouldInlineSubmenu, options?.toolbarOptions?.useSeparatorsInPrimaryActions ); container.classList.toggle('has-no-actions', primary.length === 0 && secondary.length === 0); + if (options?.toolbarOptions?.forceLeadingSeparatorInPrimaryActions && primary.length > 0) { + primary.unshift(new Separator()); + } super.setActions(primary, secondary); }; diff --git a/src/vs/workbench/browser/parts/media/paneCompositePart.css b/src/vs/workbench/browser/parts/media/paneCompositePart.css index de625937628..d13fa817943 100644 --- a/src/vs/workbench/browser/parts/media/paneCompositePart.css +++ b/src/vs/workbench/browser/parts/media/paneCompositePart.css @@ -12,6 +12,10 @@ margin-right: 4px; } +.monaco-workbench .pane-composite-part > .title > .global-actions .monaco-action-bar .action-item .action-label.separator { + background-color: var(--vscode-disabledForeground); +} + .monaco-workbench .pane-composite-part > .title.has-composite-bar > .title-actions .monaco-action-bar .action-item .action-label { outline-offset: -2px; } diff --git a/src/vs/workbench/browser/parts/paneCompositeBar.ts b/src/vs/workbench/browser/parts/paneCompositeBar.ts index 3c14098d65f..b26b6c55177 100644 --- a/src/vs/workbench/browser/parts/paneCompositeBar.ts +++ b/src/vs/workbench/browser/parts/paneCompositeBar.ts @@ -110,6 +110,7 @@ export class PaneCompositeBar extends Disposable { @IWorkbenchLayoutService protected readonly layoutService: IWorkbenchLayoutService, ) { super(); + this.location = paneCompositePart.partId === Parts.PANEL_PART ? ViewContainerLocation.Panel : paneCompositePart.partId === Parts.AUXILIARYBAR_PART ? ViewContainerLocation.AuxiliaryBar : ViewContainerLocation.Sidebar; @@ -219,6 +220,7 @@ export class PaneCompositeBar extends Disposable { } private registerListeners(): void { + // View Container Changes this._register(this.viewDescriptorService.onDidChangeViewContainers(({ added, removed }) => this.onDidChangeViewContainers(added, removed))); this._register(this.viewDescriptorService.onDidChangeContainerLocation(({ viewContainer, from, to }) => this.onDidChangeViewContainerLocation(viewContainer, from, to))); diff --git a/src/vs/workbench/browser/parts/paneCompositePart.ts b/src/vs/workbench/browser/parts/paneCompositePart.ts index 9622c739865..dfa1e804b8a 100644 --- a/src/vs/workbench/browser/parts/paneCompositePart.ts +++ b/src/vs/workbench/browser/parts/paneCompositePart.ts @@ -366,7 +366,8 @@ export abstract class AbstractPaneCompositePart extends CompositePart