From ebffc0119d2e8a3d8acc4190438ddc8a07be1825 Mon Sep 17 00:00:00 2001 From: isidor Date: Wed, 7 Dec 2016 11:38:15 +0100 Subject: [PATCH] zen mode: do not update on settings change fixes #16597 --- .../workbench/electron-browser/workbench.ts | 48 +++++++++---------- 1 file changed, 22 insertions(+), 26 deletions(-) diff --git a/src/vs/workbench/electron-browser/workbench.ts b/src/vs/workbench/electron-browser/workbench.ts index 85a2248731e..8f9dbdbc8b3 100644 --- a/src/vs/workbench/electron-browser/workbench.ts +++ b/src/vs/workbench/electron-browser/workbench.ts @@ -179,7 +179,8 @@ export class Workbench implements IPartService { private zenMode: { active: boolean; transitionedToFullScreen: boolean; - wasPartVisible: { [part: string]: boolean }; + wasSideBarVisible: boolean; + wasPanelVisible: boolean; }; constructor( @@ -540,8 +541,9 @@ export class Workbench implements IPartService { // Zen mode this.zenMode = { active: false, - wasPartVisible: {}, - transitionedToFullScreen: false + transitionedToFullScreen: false, + wasSideBarVisible: false, + wasPanelVisible: false }; } @@ -862,21 +864,23 @@ export class Workbench implements IPartService { } } - private onDidUpdateConfiguration(): void { + private onDidUpdateConfiguration(skipLayout?: boolean): void { const newSidebarPositionValue = this.configurationService.lookup(Workbench.sidebarPositionConfigurationKey).value; const newSidebarPosition = (newSidebarPositionValue === 'right') ? Position.RIGHT : Position.LEFT; if (newSidebarPosition !== this.getSideBarPosition()) { this.setSideBarPosition(newSidebarPosition); } - const newStatusbarHiddenValue = !this.configurationService.lookup(Workbench.statusbarVisibleConfigurationKey).value; - if (newStatusbarHiddenValue !== this.statusBarHidden) { - this.setStatusBarHidden(newStatusbarHiddenValue); - } + if (!this.zenMode.active) { + const newStatusbarHiddenValue = !this.configurationService.lookup(Workbench.statusbarVisibleConfigurationKey).value; + if (newStatusbarHiddenValue !== this.statusBarHidden) { + this.setStatusBarHidden(newStatusbarHiddenValue, skipLayout); + } - const newActivityBarHiddenValue = !this.configurationService.lookup(Workbench.activityBarVisibleConfigurationKey).value; - if (newActivityBarHiddenValue !== this.activityBarHidden) { - this.setActivityBarHidden(newActivityBarHiddenValue); + const newActivityBarHiddenValue = !this.configurationService.lookup(Workbench.activityBarVisibleConfigurationKey).value; + if (newActivityBarHiddenValue !== this.activityBarHidden) { + this.setActivityBarHidden(newActivityBarHiddenValue, skipLayout); + } } } @@ -1055,29 +1059,21 @@ export class Workbench implements IPartService { const windowConfig = this.configurationService.getConfiguration(); toggleFullScreen = !browser.isFullscreen() && windowConfig.window.fullScreenZenMode; this.zenMode.transitionedToFullScreen = toggleFullScreen; - const rememberPartsVisible = (part: Parts) => this.zenMode.wasPartVisible[part] = this.isVisible(part); - rememberPartsVisible(Parts.ACTIVITYBAR_PART); - rememberPartsVisible(Parts.PANEL_PART); - rememberPartsVisible(Parts.SIDEBAR_PART); - rememberPartsVisible(Parts.STATUSBAR_PART); - this.setActivityBarHidden(true, true); + this.zenMode.wasSideBarVisible = this.isVisible(Parts.SIDEBAR_PART); + this.zenMode.wasPanelVisible = this.isVisible(Parts.PANEL_PART); this.setPanelHidden(true, true); this.setSideBarHidden(true, true); + this.setActivityBarHidden(true, true); this.setStatusBarHidden(true, true); } else { - if (this.zenMode.wasPartVisible[Parts.ACTIVITYBAR_PART]) { - this.setActivityBarHidden(false, true); - } - if (this.zenMode.wasPartVisible[Parts.PANEL_PART]) { + if (this.zenMode.wasPanelVisible) { this.setPanelHidden(false, true); } - if (this.zenMode.wasPartVisible[Parts.SIDEBAR_PART]) { + if (this.zenMode.wasSideBarVisible) { this.setSideBarHidden(false, true); } - if (this.zenMode.wasPartVisible[Parts.STATUSBAR_PART]) { - this.setStatusBarHidden(false, true); - } - this.zenMode.wasPartVisible = {}; + // Status bar and activity bar visibility come from settings -> update their visibility. + this.onDidUpdateConfiguration(true); toggleFullScreen = this.zenMode.transitionedToFullScreen && browser.isFullscreen(); } this.inZenMode.set(this.zenMode.active); -- GitLab