Add an action to close other windows (fix #233635) (#278779)

This commit is contained in:
Benjamin Pasero
2025-11-21 15:24:41 +01:00
committed by GitHub
parent 2648263d3e
commit 5792c435d2
2 changed files with 28 additions and 1 deletions

View File

@@ -65,6 +65,32 @@ export class CloseWindowAction extends Action2 {
}
}
export class CloseOtherWindowsAction extends Action2 {
private static readonly ID = 'workbench.action.closeOtherWindows';
constructor() {
super({
id: CloseOtherWindowsAction.ID,
title: localize2('closeOtherWindows', "Close Other Windows"),
f1: true
});
}
override async run(accessor: ServicesAccessor): Promise<void> {
const nativeHostService = accessor.get(INativeHostService);
const currentWindowId = getActiveWindow().vscodeWindowId;
const windows = await nativeHostService.getWindows({ includeAuxiliaryWindows: false });
for (const window of windows) {
if (window.id !== currentWindowId) {
nativeHostService.closeWindow({ targetWindowId: window.id });
}
}
}
}
abstract class BaseZoomAction extends Action2 {
private static readonly ZOOM_LEVEL_SETTING_KEY = 'window.zoomLevel';

View File

@@ -10,7 +10,7 @@ import { IConfigurationRegistry, Extensions as ConfigurationExtensions, Configur
import { KeyMod, KeyCode } from '../../base/common/keyCodes.js';
import { isLinux, isMacintosh, isWindows } from '../../base/common/platform.js';
import { ConfigureRuntimeArgumentsAction, ToggleDevToolsAction, ReloadWindowWithExtensionsDisabledAction, OpenUserDataFolderAction, ShowGPUInfoAction, StopTracing } from './actions/developerActions.js';
import { ZoomResetAction, ZoomOutAction, ZoomInAction, CloseWindowAction, SwitchWindowAction, QuickSwitchWindowAction, NewWindowTabHandler, ShowPreviousWindowTabHandler, ShowNextWindowTabHandler, MoveWindowTabToNewWindowHandler, MergeWindowTabsHandlerHandler, ToggleWindowTabsBarHandler, ToggleWindowAlwaysOnTopAction, DisableWindowAlwaysOnTopAction, EnableWindowAlwaysOnTopAction } from './actions/windowActions.js';
import { ZoomResetAction, ZoomOutAction, ZoomInAction, CloseWindowAction, SwitchWindowAction, QuickSwitchWindowAction, NewWindowTabHandler, ShowPreviousWindowTabHandler, ShowNextWindowTabHandler, MoveWindowTabToNewWindowHandler, MergeWindowTabsHandlerHandler, ToggleWindowTabsBarHandler, ToggleWindowAlwaysOnTopAction, DisableWindowAlwaysOnTopAction, EnableWindowAlwaysOnTopAction, CloseOtherWindowsAction } from './actions/windowActions.js';
import { ContextKeyExpr } from '../../platform/contextkey/common/contextkey.js';
import { KeybindingsRegistry, KeybindingWeight } from '../../platform/keybinding/common/keybindingsRegistry.js';
import { CommandsRegistry } from '../../platform/commands/common/commands.js';
@@ -41,6 +41,7 @@ import { MAX_ZOOM_LEVEL, MIN_ZOOM_LEVEL } from '../../platform/window/electron-b
registerAction2(SwitchWindowAction);
registerAction2(QuickSwitchWindowAction);
registerAction2(CloseWindowAction);
registerAction2(CloseOtherWindowsAction);
registerAction2(ToggleWindowAlwaysOnTopAction);
registerAction2(EnableWindowAlwaysOnTopAction);
registerAction2(DisableWindowAlwaysOnTopAction);