diff options
author | Benjamin Pasero <benjpas@microsoft.com> | 2020-10-14 13:16:05 +0300 |
---|---|---|
committer | Benjamin Pasero <benjpas@microsoft.com> | 2020-10-14 13:16:05 +0300 |
commit | b77f0bd932218ae1b1e1ff28ea2f384f21fb27ad (patch) | |
tree | 200acd0138435129555d2900688a86e0a13e48e4 | |
parent | 71e0a05d494e04e2b39067ca192c21e0fd41f157 (diff) |
add to menu
-rw-r--r-- | src/vs/platform/menubar/electron-main/menubar.ts | 6 | ||||
-rw-r--r-- | src/vs/workbench/electron-sandbox/desktop.contribution.ts | 26 |
2 files changed, 27 insertions, 5 deletions
diff --git a/src/vs/platform/menubar/electron-main/menubar.ts b/src/vs/platform/menubar/electron-main/menubar.ts index 12c83e1aa2d..16c91a0a30d 100644 --- a/src/vs/platform/menubar/electron-main/menubar.ts +++ b/src/vs/platform/menubar/electron-main/menubar.ts @@ -377,8 +377,10 @@ export class Menubar { const hide = new MenuItem({ label: nls.localize('mHide', "Hide {0}", product.nameLong), role: 'hide', accelerator: 'Command+H' }); const hideOthers = new MenuItem({ label: nls.localize('mHideOthers', "Hide Others"), role: 'hideOthers', accelerator: 'Command+Alt+H' }); const showAll = new MenuItem({ label: nls.localize('mShowAll', "Show All"), role: 'unhide' }); + const confirmQuit = this.createMenuItem(nls.localize('miWarnBeforeQuit', "Warn Before Quitting"), 'workbench.action.toggleConfirmBeforeQuit', this.windowsMainService.getWindowCount() > 0, this.configurationService.getValue<boolean>('workbench.confirmBeforeQuit')); const quit = new MenuItem(this.likeAction('workbench.action.quit', { - label: nls.localize('miQuit', "Quit {0}", product.nameLong), click: () => { + label: nls.localize('miQuit', "Quit {0}", product.nameLong), + click: () => { const lastActiveWindow = this.windowsMainService.getLastActiveWindow(); if ( this.windowsMainService.getWindowCount() === 0 || // allow to quit when no more windows are open @@ -408,6 +410,8 @@ export class Menubar { hideOthers, showAll, __separator__(), + confirmQuit, + __separator__(), quit ]); diff --git a/src/vs/workbench/electron-sandbox/desktop.contribution.ts b/src/vs/workbench/electron-sandbox/desktop.contribution.ts index 8e34d650acf..d0981c33a8f 100644 --- a/src/vs/workbench/electron-sandbox/desktop.contribution.ts +++ b/src/vs/workbench/electron-sandbox/desktop.contribution.ts @@ -21,7 +21,7 @@ import { INativeHostService } from 'vs/platform/native/electron-sandbox/native'; import { IJSONContributionRegistry, Extensions as JSONExtensions } from 'vs/platform/jsonschemas/common/jsonContributionRegistry'; import product from 'vs/platform/product/common/product'; import { IJSONSchema } from 'vs/base/common/jsonSchema'; -import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; +import { ConfigurationTarget, IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { IDialogService } from 'vs/platform/dialogs/common/dialogs'; import { ServicesAccessor } from 'vs/platform/instantiation/common/instantiation'; @@ -42,7 +42,7 @@ import { ServicesAccessor } from 'vs/platform/instantiation/common/instantiation registry.registerWorkbenchAction(SyncActionDescriptor.from(SwitchWindow, { primary: 0, mac: { primary: KeyMod.WinCtrl | KeyCode.KEY_W } }), 'Switch Window...'); registry.registerWorkbenchAction(SyncActionDescriptor.from(QuickSwitchWindow), 'Quick Switch Window...'); - async function handleCloseOrQuitPrompt(accessor: ServicesAccessor, settingsKey: string, message: string, primaryButton: string): Promise<boolean> { + async function handleCloseOrQuitConfirm(accessor: ServicesAccessor, settingsKey: string, message: string, primaryButton: string): Promise<boolean> { const configurationService = accessor.get(IConfigurationService); if (!configurationService.getValue<boolean>(settingsKey)) { return true; // proceed @@ -77,7 +77,7 @@ import { ServicesAccessor } from 'vs/platform/instantiation/common/instantiation const message = nls.localize('closeWindowMessage', "Are you sure you want to close the window?"); const button = nls.localize({ key: 'closeWindowButtonLabel', comment: ['&& denotes a mnemonic'] }, "&&Close Window"); - const confirmed = await handleCloseOrQuitPrompt(accessor, 'window.confirmBeforeClose', message, button); + const confirmed = await handleCloseOrQuitConfirm(accessor, 'window.confirmBeforeClose', message, button); if (confirmed) { nativeHostService.closeWindow(); } @@ -93,7 +93,7 @@ import { ServicesAccessor } from 'vs/platform/instantiation/common/instantiation const message = nls.localize('quitMessage', "Are you sure you want to quit?"); const button = nls.localize({ key: 'quitButtonLabel', comment: ['&& denotes a mnemonic'] }, "&&Quit"); - const confirmed = await handleCloseOrQuitPrompt(accessor, 'workbench.confirmBeforeQuit', message, button); + const confirmed = await handleCloseOrQuitConfirm(accessor, 'workbench.confirmBeforeQuit', message, button); if (confirmed) { nativeHostService.quit(); } @@ -112,6 +112,13 @@ import { ServicesAccessor } from 'vs/platform/instantiation/common/instantiation const nativeHostService = accessor.get(INativeHostService); nativeHostService.closeWindow(); }); + + CommandsRegistry.registerCommand('workbench.action.toggleConfirmBeforeQuit', accessor => { + const configurationService = accessor.get(IConfigurationService); + const setting = configurationService.inspect<boolean>('workbench.confirmBeforeQuit').userValue; + + return configurationService.updateValue('workbench.confirmBeforeQuit', setting === false ? true : false, ConfigurationTarget.USER); + }); })(); // Actions: macOS Native Tabs @@ -168,6 +175,17 @@ import { ServicesAccessor } from 'vs/platform/instantiation/common/instantiation }); MenuRegistry.appendMenuItem(MenuId.MenubarFileMenu, { + group: 'z_ConfirmExit', + command: { + id: 'workbench.action.toggleConfirmBeforeQuit', + title: nls.localize('miConfirmExit', "Confirm Before Exit"), + toggled: ContextKeyExpr.equals('config.workbench.confirmBeforeQuit', true) + }, + order: 1, + when: IsMacContext.toNegated() + }); + + MenuRegistry.appendMenuItem(MenuId.MenubarFileMenu, { group: 'z_Exit', command: { id: 'workbench.action.quit', |