From 3e3733125077f2c005252ada870951d81e3e204f Mon Sep 17 00:00:00 2001 From: David Terry Date: Fri, 6 Jan 2017 22:37:31 +0100 Subject: [PATCH] menubar visibility is updated from within each window, rather than from outside --- src/vs/code/electron-main/window.ts | 21 ++++++++++++++++++++- src/vs/code/electron-main/windows.ts | 19 ------------------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/src/vs/code/electron-main/window.ts b/src/vs/code/electron-main/window.ts index 2087bb1aca2..89779d04901 100644 --- a/src/vs/code/electron-main/window.ts +++ b/src/vs/code/electron-main/window.ts @@ -117,6 +117,12 @@ export enum ReadyState { READY } +interface IConfiguration { + window: { + menuBarVisibility: 'visible' | 'toggle' | 'hidden'; + }; +} + export interface IVSCodeWindow { id: number; readyState: ReadyState; @@ -142,6 +148,7 @@ export class VSCodeWindow implements IVSCodeWindow { private _extensionDevelopmentPath: string; private _isExtensionTestHost: boolean; private windowState: IWindowState; + private currentMenuBarVisibility: '' | 'visible' | 'toggle' | 'hidden'; private currentWindowMode: WindowMode; private whenReadyCallbacks: TValueCallback[]; @@ -239,8 +246,20 @@ export class VSCodeWindow implements IVSCodeWindow { this.setMenuBarVisibility(windowConfig && windowConfig.menuBarVisibility); this.registerListeners(); + + this.configurationService.onDidUpdateConfiguration(e => this.onConfigurationUpdated(e.config)); } + private onConfigurationUpdated(config: IConfiguration): void { + + let newMenuBarVisibility = config && config.window && config.window.menuBarVisibility; + + if (newMenuBarVisibility !== this.currentMenuBarVisibility) { + this.currentMenuBarVisibility = newMenuBarVisibility; + this.setMenuBarVisibility(newMenuBarVisibility); + } + }; + public hasHiddenTitleBarStyle(): boolean { return this.hiddenTitleBarStyle; } @@ -656,7 +675,7 @@ export class VSCodeWindow implements IVSCodeWindow { const windowConfig = this.configurationService.getConfiguration('window'); let menuBarVisibility = windowConfig && windowConfig.menuBarVisibility; if (typeof menuBarVisibility !== 'string') { - menuBarVisibility = 'toggle'; + menuBarVisibility = willBeFullScreen ? 'toggle' : 'visible'; }; this.setMenuBarVisibility(menuBarVisibility, false); diff --git a/src/vs/code/electron-main/windows.ts b/src/vs/code/electron-main/windows.ts index 02a5c4e5f21..a035790149c 100644 --- a/src/vs/code/electron-main/windows.ts +++ b/src/vs/code/electron-main/windows.ts @@ -90,12 +90,6 @@ interface INativeOpenDialogOptions { window?: VSCodeWindow; } -interface IConfiguration { - window: { - menuBarVisibility: 'visible' | 'toggle' | 'hidden'; - }; -} - const ReopenFoldersSetting = { ALL: 'all', ONE: 'one', @@ -154,7 +148,6 @@ export class WindowsManager implements IWindowsMainService { private initialUserEnv: platform.IProcessEnvironment; private windowsState: IWindowsState; - private currentMenuBarVisibility: '' | 'visible' | 'toggle' | 'hidden'; private _onRecentPathsChange = new Emitter(); onRecentPathsChange: CommonEvent = this._onRecentPathsChange.event; @@ -282,20 +275,8 @@ export class WindowsManager implements IWindowsMainService { // Update jump list when recent paths change this.onRecentPathsChange(() => this.updateWindowsJumpList()); - - this.configurationService.onDidUpdateConfiguration(e => this.onConfigurationUpdated(e.config)); } - private onConfigurationUpdated(config: IConfiguration): void { - - let newMenuBarVisibility = config && config.window && config.window.menuBarVisibility; - - if (newMenuBarVisibility !== this.currentMenuBarVisibility) { - this.currentMenuBarVisibility = newMenuBarVisibility; - this.getWindows().forEach(w => w.setMenuBarVisibility(newMenuBarVisibility)); - } - }; - private onBroadcast(event: string, payload: any): void { // Theme changes -- GitLab