mirror of
https://github.com/microsoft/vscode.git
synced 2026-10-05 15:36:22 +01:00
fixes #142134
This commit is contained in:
1 parent
97b365fc73
commit
3c22973327
3 files changed
+59
-40
No files matched your search
@@ -143,6 +143,7 @@ export class MenuId {
|
||||
static readonly TimelineTitleContext = new MenuId('TimelineTitleContext');
|
||||
static readonly AccountsContext = new MenuId('AccountsContext');
|
||||
static readonly PanelTitle = new MenuId('PanelTitle');
|
||||
static readonly AuxiliaryBarTitle = new MenuId('AuxiliaryBarTitle');
|
||||
static readonly TerminalInstanceContext = new MenuId('TerminalInstanceContext');
|
||||
static readonly TerminalEditorInstanceContext = new MenuId('TerminalEditorInstanceContext');
|
||||
static readonly TerminalNewDropdownContext = new MenuId('TerminalNewDropdownContext');
|
||||
|
||||
@@ -13,7 +13,7 @@ import { IWorkbenchActionRegistry, Extensions as WorkbenchExtensions, CATEGORIES
|
||||
import { IWorkbenchLayoutService, PanelAlignment, Parts, Position, positionToString } from 'vs/workbench/services/layout/browser/layoutService';
|
||||
import { ActivityAction, ToggleCompositePinnedAction, ICompositeBar } from 'vs/workbench/browser/parts/compositeBarActions';
|
||||
import { IActivity } from 'vs/workbench/common/activity';
|
||||
import { PanelAlignmentContext, PanelMaximizedContext, PanelPositionContext, PanelVisibleContext } from 'vs/workbench/common/contextkeys';
|
||||
import { AuxiliaryBarVisibleContext, PanelAlignmentContext, PanelMaximizedContext, PanelPositionContext, PanelVisibleContext } from 'vs/workbench/common/contextkeys';
|
||||
import { ContextKeyExpr, ContextKeyExpression } from 'vs/platform/contextkey/common/contextkey';
|
||||
import { Codicon } from 'vs/base/common/codicons';
|
||||
import { registerIcon } from 'vs/platform/theme/common/iconRegistry';
|
||||
@@ -391,6 +391,28 @@ registerAction2(class extends Action2 {
|
||||
}
|
||||
});
|
||||
|
||||
registerAction2(class extends Action2 {
|
||||
constructor() {
|
||||
super({
|
||||
id: 'workbench.action.closeAuxiliaryBar',
|
||||
title: { value: localize('closeSidePanel', "Close Side Panel"), original: 'Close Side Panel' },
|
||||
category: CATEGORIES.View,
|
||||
icon: closeIcon,
|
||||
menu: [{
|
||||
id: MenuId.CommandPalette,
|
||||
when: AuxiliaryBarVisibleContext,
|
||||
}, {
|
||||
id: MenuId.AuxiliaryBarTitle,
|
||||
group: 'navigation',
|
||||
order: 2
|
||||
}]
|
||||
});
|
||||
}
|
||||
run(accessor: ServicesAccessor) {
|
||||
accessor.get(IWorkbenchLayoutService).setPartHidden(true, Parts.AUXILIARYBAR_PART);
|
||||
}
|
||||
});
|
||||
|
||||
MenuRegistry.appendMenuItems([
|
||||
{
|
||||
id: MenuId.MenubarAppearanceMenu,
|
||||
|
||||
@@ -109,6 +109,9 @@ export abstract class BasePanelPart extends CompositePart<PaneComposite> impleme
|
||||
private compositeBar: CompositeBar;
|
||||
private readonly compositeActions = new Map<string, { activityAction: PanelActivityAction; pinnedAction: ToggleCompositePinnedAction }>();
|
||||
|
||||
private globalToolBar: ToolBar | undefined;
|
||||
private globalActions: CompositeMenuActions;
|
||||
|
||||
private readonly panelDisposables: Map<string, IDisposable> = new Map<string, IDisposable>();
|
||||
|
||||
private blockOpeningPanel = false;
|
||||
@@ -201,6 +204,10 @@ export abstract class BasePanelPart extends CompositePart<PaneComposite> impleme
|
||||
|
||||
this.registerListeners();
|
||||
this.onDidRegisterPanels([...this.getPaneComposites()]);
|
||||
|
||||
// Global Panel Actions
|
||||
this.globalActions = this._register(this.instantiationService.createInstance(CompositeMenuActions, partId === Parts.PANEL_PART ? MenuId.PanelTitle : MenuId.AuxiliaryBarTitle, undefined, undefined));
|
||||
this._register(this.globalActions.onDidChange(() => this.updateGlobalToolbarActions()));
|
||||
}
|
||||
|
||||
protected abstract getActivityHoverOptions(): IActivityHoverOptions;
|
||||
@@ -520,6 +527,24 @@ export abstract class BasePanelPart extends CompositePart<PaneComposite> impleme
|
||||
}));
|
||||
}
|
||||
|
||||
override createTitleArea(parent: HTMLElement): HTMLElement {
|
||||
const element = super.createTitleArea(parent);
|
||||
const globalTitleActionsContainer = element.appendChild($('.global-actions'));
|
||||
|
||||
// Global Actions Toolbar
|
||||
this.globalToolBar = this._register(new ToolBar(globalTitleActionsContainer, this.contextMenuService, {
|
||||
actionViewItemProvider: action => this.actionViewItemProvider(action),
|
||||
orientation: ActionsOrientation.HORIZONTAL,
|
||||
getKeyBinding: action => this.keybindingService.lookupKeybinding(action.id),
|
||||
anchorAlignmentProvider: () => this.getTitleAreaDropDownAnchorAlignment(),
|
||||
toggleMenuTitle: localize('moreActions', "More Actions...")
|
||||
}));
|
||||
|
||||
this.updateGlobalToolbarActions();
|
||||
|
||||
return element;
|
||||
}
|
||||
|
||||
override updateStyles(): void {
|
||||
super.updateStyles();
|
||||
|
||||
@@ -685,6 +710,15 @@ export abstract class BasePanelPart extends CompositePart<PaneComposite> impleme
|
||||
return viewContainer && this.viewDescriptorService.getViewContainerLocation(viewContainer) === this.viewContainerLocation ? viewContainer : undefined;
|
||||
}
|
||||
|
||||
private updateGlobalToolbarActions(): void {
|
||||
const primaryActions = this.globalActions.getPrimaryActions();
|
||||
const secondaryActions = this.globalActions.getSecondaryActions();
|
||||
|
||||
if (this.globalToolBar) {
|
||||
this.globalToolBar.setActions(prepareActions(primaryActions), prepareActions(secondaryActions));
|
||||
}
|
||||
}
|
||||
|
||||
private getCompositeActions(compositeId: string): { activityAction: PanelActivityAction; pinnedAction: ToggleCompositePinnedAction } {
|
||||
let compositeActions = this.compositeActions.get(compositeId);
|
||||
if (!compositeActions) {
|
||||
@@ -732,7 +766,7 @@ export abstract class BasePanelPart extends CompositePart<PaneComposite> impleme
|
||||
return 0;
|
||||
}
|
||||
|
||||
return this.toolBar.getItemsWidth();
|
||||
return this.toolBar.getItemsWidth() + (this.globalToolBar?.getItemsWidth() ?? 0);
|
||||
}
|
||||
|
||||
private onDidStorageValueChange(e: IStorageValueChangeEvent): void {
|
||||
@@ -866,9 +900,6 @@ export class PanelPart extends BasePanelPart {
|
||||
static readonly pinnedPanelsKey = 'workbench.panel.pinnedPanels';
|
||||
static readonly placeholdeViewContainersKey = 'workbench.panel.placeholderPanels';
|
||||
|
||||
private globalToolBar: ToolBar | undefined;
|
||||
private globalActions: CompositeMenuActions;
|
||||
|
||||
constructor(
|
||||
@INotificationService notificationService: INotificationService,
|
||||
@IStorageService storageService: IStorageService,
|
||||
@@ -908,10 +939,6 @@ export class PanelPart extends BasePanelPart {
|
||||
hasTitle: true
|
||||
},
|
||||
);
|
||||
|
||||
// Global Panel Actions
|
||||
this.globalActions = this._register(this.instantiationService.createInstance(CompositeMenuActions, MenuId.PanelTitle, undefined, undefined));
|
||||
this._register(this.globalActions.onDidChange(() => this.updateGlobalToolbarActions()));
|
||||
}
|
||||
|
||||
override updateStyles(): void {
|
||||
@@ -947,28 +974,6 @@ export class PanelPart extends BasePanelPart {
|
||||
]);
|
||||
}
|
||||
|
||||
override createTitleArea(parent: HTMLElement): HTMLElement {
|
||||
const element = super.createTitleArea(parent);
|
||||
const globalTitleActionsContainer = element.appendChild($('.global-actions'));
|
||||
|
||||
// Global Actions Toolbar
|
||||
this.globalToolBar = this._register(new ToolBar(globalTitleActionsContainer, this.contextMenuService, {
|
||||
actionViewItemProvider: action => this.actionViewItemProvider(action),
|
||||
orientation: ActionsOrientation.HORIZONTAL,
|
||||
getKeyBinding: action => this.keybindingService.lookupKeybinding(action.id),
|
||||
anchorAlignmentProvider: () => this.getTitleAreaDropDownAnchorAlignment(),
|
||||
toggleMenuTitle: localize('moreActions', "More Actions...")
|
||||
}));
|
||||
|
||||
this.updateGlobalToolbarActions();
|
||||
|
||||
return element;
|
||||
}
|
||||
|
||||
override getToolbarWidth(): number {
|
||||
return super.getToolbarWidth() + (this.globalToolBar?.getItemsWidth() ?? 0);
|
||||
}
|
||||
|
||||
override layout(width: number, height: number, top: number, left: number): void {
|
||||
let dimensions: Dimension;
|
||||
if (this.layoutService.getPanelPosition() === Position.RIGHT) {
|
||||
@@ -981,15 +986,6 @@ export class PanelPart extends BasePanelPart {
|
||||
super.layout(dimensions.width, dimensions.height, top, left);
|
||||
}
|
||||
|
||||
private updateGlobalToolbarActions(): void {
|
||||
const primaryActions = this.globalActions.getPrimaryActions();
|
||||
const secondaryActions = this.globalActions.getSecondaryActions();
|
||||
|
||||
if (this.globalToolBar) {
|
||||
this.globalToolBar.setActions(prepareActions(primaryActions), prepareActions(secondaryActions));
|
||||
}
|
||||
}
|
||||
|
||||
toJSON(): object {
|
||||
return {
|
||||
type: Parts.PANEL_PART
|
||||
|
||||
Reference in new issue
Block a user