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

autoHideMenubar: respect default and dynamically update on config change

上级 c388fd9f
......@@ -44,6 +44,9 @@ interface IConfiguration extends IFilesConfiguration {
visible: boolean;
}
};
window: {
autoHideMenuBar: boolean;
};
}
export class VSCodeMenu {
......@@ -56,6 +59,7 @@ export class VSCodeMenu {
private currentSidebarLocation: 'left' | 'right';
private currentStatusbarVisible: boolean;
private currentActivityBarVisible: boolean;
private currentAutoHideMenuBar: boolean;
private isQuitting: boolean;
private appMenuInstalled: boolean;
......@@ -196,6 +200,15 @@ export class VSCodeMenu {
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) {
this.updateMenu();
}
......@@ -242,6 +255,10 @@ export class VSCodeMenu {
private install(): void {
// Auto hide menu bar
const windows = this.windowsService.getWindows();
windows.forEach(w => w.win.setAutoHideMenuBar(this.currentAutoHideMenuBar));
// Menus
const menubar = new Menu();
......
......@@ -657,9 +657,13 @@ export class VSCodeWindow implements IVSCodeWindow {
public setMenuBarVisibility(visible: boolean): void {
const windowConfig = this.configurationService.getConfiguration<IWindowSettings>('window');
let autoHideMenuBar = windowConfig && windowConfig.autoHideMenuBar;
if (typeof autoHideMenuBar !== 'boolean') {
autoHideMenuBar = true;
};
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 {
......
......@@ -1146,6 +1146,10 @@ export class WindowsManager implements IWindowsMainService {
const newMenuBarHidden = !menuBarHidden;
const windowConfig = this.configurationService.getConfiguration<IWindowSettings>('window');
let autoHideMenuBar = windowConfig && windowConfig.autoHideMenuBar;
if (typeof autoHideMenuBar !== 'boolean') {
autoHideMenuBar = true;
};
this.storageService.setItem(VSCodeWindow.menuBarHiddenKey, newMenuBarHidden);
......@@ -1153,7 +1157,7 @@ export class WindowsManager implements IWindowsMainService {
WindowsManager.WINDOWS.forEach(w => w.setMenuBarVisibility(!newMenuBarHidden));
// Inform user if menu bar is now hidden
if (newMenuBarHidden && windowConfig && windowConfig.autoHideMenuBar) {
if (newMenuBarHidden && autoHideMenuBar) {
const vscodeWindow = this.getWindowById(windowId);
if (vscodeWindow) {
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.
先完成此消息的编辑!
想要评论请 注册