提交 a4ed430e 编写于 作者: D David Terry

autoHideMenubar: respect default and dynamically update on config change

上级 c388fd9f
...@@ -44,6 +44,9 @@ interface IConfiguration extends IFilesConfiguration { ...@@ -44,6 +44,9 @@ interface IConfiguration extends IFilesConfiguration {
visible: boolean; visible: boolean;
} }
}; };
window: {
autoHideMenuBar: boolean;
};
} }
export class VSCodeMenu { export class VSCodeMenu {
...@@ -56,6 +59,7 @@ export class VSCodeMenu { ...@@ -56,6 +59,7 @@ export class VSCodeMenu {
private currentSidebarLocation: 'left' | 'right'; private currentSidebarLocation: 'left' | 'right';
private currentStatusbarVisible: boolean; private currentStatusbarVisible: boolean;
private currentActivityBarVisible: boolean; private currentActivityBarVisible: boolean;
private currentAutoHideMenuBar: boolean;
private isQuitting: boolean; private isQuitting: boolean;
private appMenuInstalled: boolean; private appMenuInstalled: boolean;
...@@ -196,6 +200,15 @@ export class VSCodeMenu { ...@@ -196,6 +200,15 @@ export class VSCodeMenu {
updateMenu = true; updateMenu = true;
} }
let newAutoHideMenuBar = config && config.window && config.window.autoHideMenuBar;
if (typeof newAutoHideMenuBar !== 'boolean') {
newAutoHideMenuBar = true;
}
if ( newAutoHideMenuBar !== this.currentAutoHideMenuBar) {
this.currentAutoHideMenuBar = newAutoHideMenuBar;
updateMenu = true;
}
if (handleMenu && updateMenu) { if (handleMenu && updateMenu) {
this.updateMenu(); this.updateMenu();
} }
...@@ -242,6 +255,10 @@ export class VSCodeMenu { ...@@ -242,6 +255,10 @@ export class VSCodeMenu {
private install(): void { private install(): void {
// Auto hide menu bar
const windows = this.windowsService.getWindows();
windows.forEach(w => w.win.setAutoHideMenuBar(this.currentAutoHideMenuBar));
// Menus // Menus
const menubar = new Menu(); const menubar = new Menu();
......
...@@ -657,9 +657,13 @@ export class VSCodeWindow implements IVSCodeWindow { ...@@ -657,9 +657,13 @@ export class VSCodeWindow implements IVSCodeWindow {
public setMenuBarVisibility(visible: boolean): void { public setMenuBarVisibility(visible: boolean): void {
const windowConfig = this.configurationService.getConfiguration<IWindowSettings>('window'); const windowConfig = this.configurationService.getConfiguration<IWindowSettings>('window');
let autoHideMenuBar = windowConfig && windowConfig.autoHideMenuBar;
if (typeof autoHideMenuBar !== 'boolean') {
autoHideMenuBar = true;
};
this.win.setMenuBarVisibility(visible); this.win.setMenuBarVisibility(visible);
this.win.setAutoHideMenuBar(windowConfig && windowConfig.autoHideMenuBar ? !visible : false); this.win.setAutoHideMenuBar(autoHideMenuBar ? !visible : false);
} }
public sendWhenReady(channel: string, ...args: any[]): void { public sendWhenReady(channel: string, ...args: any[]): void {
......
...@@ -1146,6 +1146,10 @@ export class WindowsManager implements IWindowsMainService { ...@@ -1146,6 +1146,10 @@ export class WindowsManager implements IWindowsMainService {
const newMenuBarHidden = !menuBarHidden; const newMenuBarHidden = !menuBarHidden;
const windowConfig = this.configurationService.getConfiguration<IWindowSettings>('window'); const windowConfig = this.configurationService.getConfiguration<IWindowSettings>('window');
let autoHideMenuBar = windowConfig && windowConfig.autoHideMenuBar;
if (typeof autoHideMenuBar !== 'boolean') {
autoHideMenuBar = true;
};
this.storageService.setItem(VSCodeWindow.menuBarHiddenKey, newMenuBarHidden); this.storageService.setItem(VSCodeWindow.menuBarHiddenKey, newMenuBarHidden);
...@@ -1153,7 +1157,7 @@ export class WindowsManager implements IWindowsMainService { ...@@ -1153,7 +1157,7 @@ export class WindowsManager implements IWindowsMainService {
WindowsManager.WINDOWS.forEach(w => w.setMenuBarVisibility(!newMenuBarHidden)); WindowsManager.WINDOWS.forEach(w => w.setMenuBarVisibility(!newMenuBarHidden));
// Inform user if menu bar is now hidden // Inform user if menu bar is now hidden
if (newMenuBarHidden && windowConfig && windowConfig.autoHideMenuBar) { if (newMenuBarHidden && autoHideMenuBar) {
const vscodeWindow = this.getWindowById(windowId); const vscodeWindow = this.getWindowById(windowId);
if (vscodeWindow) { if (vscodeWindow) {
vscodeWindow.send('vscode:showInfoMessage', nls.localize('hiddenMenuBar', "You can still access the menu bar by pressing the **Alt** key.")); vscodeWindow.send('vscode:showInfoMessage', nls.localize('hiddenMenuBar', "You can still access the menu bar by pressing the **Alt** key."));
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册