From e5ec7d21f832ab35dbed52cf93cf829e969b30bf Mon Sep 17 00:00:00 2001 From: Benjamin Simmonds <44439583+benibenj@users.noreply.github.com> Date: Fri, 17 Nov 2023 10:54:25 +0100 Subject: [PATCH] Toggle Editor Actions in Titlebar when Tab Bar is Hidden (#198494) * Toggle Editor Actions in Titlebar when tab bar is hidden --- .../browser/parts/titlebar/titlebarPart.ts | 33 ++++++++++++++++--- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/src/vs/workbench/browser/parts/titlebar/titlebarPart.ts b/src/vs/workbench/browser/parts/titlebar/titlebarPart.ts index 1ed29e1038c..b99860c0bef 100644 --- a/src/vs/workbench/browser/parts/titlebar/titlebarPart.ts +++ b/src/vs/workbench/browser/parts/titlebar/titlebarPart.ts @@ -23,7 +23,7 @@ import { EventType, EventHelper, Dimension, append, $, addDisposableListener, pr import { CustomMenubarControl } from 'vs/workbench/browser/parts/titlebar/menubarControl'; import { IInstantiationService, ServicesAccessor } from 'vs/platform/instantiation/common/instantiation'; import { Emitter, Event } from 'vs/base/common/event'; -import { IStorageService } from 'vs/platform/storage/common/storage'; +import { IStorageService, StorageScope, StorageTarget } from 'vs/platform/storage/common/storage'; import { Parts, IWorkbenchLayoutService, ActivityBarPosition, LayoutSettings } from 'vs/workbench/services/layout/browser/layoutService'; import { createActionViewItem, createAndFillInActionBarActions } from 'vs/platform/actions/browser/menuEntryActionViewItem'; import { Action2, IMenu, IMenuService, MenuId, registerAction2 } from 'vs/platform/actions/common/actions'; @@ -609,7 +609,7 @@ export class TitlebarPart extends Part implements ITitleService { } -class ToogleConfigAction extends Action2 { +class ToggleConfigAction extends Action2 { constructor(private readonly section: string, title: string, order: number) { super({ @@ -627,18 +627,43 @@ class ToogleConfigAction extends Action2 { } } -registerAction2(class ToogleCommandCenter extends ToogleConfigAction { +registerAction2(class ToggleCommandCenter extends ToggleConfigAction { constructor() { super(LayoutSettings.COMMAND_CENTER, localize('toggle.commandCenter', 'Command Center'), 1); } }); -registerAction2(class ToogleLayoutControl extends ToogleConfigAction { +registerAction2(class ToggleLayoutControl extends ToggleConfigAction { constructor() { super('workbench.layoutControl.enabled', localize('toggle.layout', 'Layout Controls'), 2); } }); +registerAction2(class ToggleEditorActions extends Action2 { + static readonly settingsID = `workbench.editor.editorActionsLocation`; + constructor() { + super({ + id: `toggle.${ToggleEditorActions.settingsID}`, + title: localize('toggle.editorActions', 'Editor Actions'), + toggled: ContextKeyExpr.equals(`config.${ToggleEditorActions.settingsID}`, 'hidden').negate(), + menu: { id: MenuId.TitleBarContext, order: 3, when: ContextKeyExpr.equals(`config.workbench.editor.showTabs`, 'none') } + }); + } + + run(accessor: ServicesAccessor, ...args: any[]): void { + const configService = accessor.get(IConfigurationService); + const storageService = accessor.get(IStorageService); + const value = configService.getValue(ToggleEditorActions.settingsID); + if (value === 'hidden') { + const storedValue = storageService.get(ToggleEditorActions.settingsID, StorageScope.PROFILE); + configService.updateValue(ToggleEditorActions.settingsID, storedValue ?? 'default'); + } else { + configService.updateValue(ToggleEditorActions.settingsID, 'hidden'); + storageService.store(ToggleEditorActions.settingsID, value, StorageScope.PROFILE, StorageTarget.USER); + } + } +}); + const ACCOUNTS_ACTIVITY_TILE_ACTION: IAction = { id: ACCOUNTS_ACTIVITY_ID, label: localize('accounts', "Accounts"),