diff --git a/src/vs/platform/windows/common/windows.ts b/src/vs/platform/windows/common/windows.ts index f978e32945f382997509f251f8997704341b694f..ee7e6f481c50deded3f33b4900669ea2a6bec04d 100644 --- a/src/vs/platform/windows/common/windows.ts +++ b/src/vs/platform/windows/common/windows.ts @@ -90,7 +90,6 @@ export interface IWindowSettings { openFilesInNewWindow: boolean; reopenFolders: 'all' | 'one' | 'none'; restoreFullscreen: boolean; - fullScreenZenMode: boolean; zoomLevel: number; titleBarStyle: 'native' | 'custom'; autoDetectHighContrast: boolean; diff --git a/src/vs/workbench/browser/actions/toggleZenMode.ts b/src/vs/workbench/browser/actions/toggleZenMode.ts index d542e39b8ee1520ee175b58540153542a720149b..01718c2a6cde70a60bc947bd5473956be662adb6 100644 --- a/src/vs/workbench/browser/actions/toggleZenMode.ts +++ b/src/vs/workbench/browser/actions/toggleZenMode.ts @@ -10,7 +10,7 @@ import { KeyCode, KeyMod, KeyChord } from 'vs/base/common/keyCodes'; import { Registry } from 'vs/platform/platform'; import { SyncActionDescriptor } from 'vs/platform/actions/common/actions'; import { IWorkbenchActionRegistry, Extensions } from 'vs/workbench/common/actionRegistry'; -import { IPartService } from 'vs/workbench/services/part/common/partService'; +import { IPartService, IZenModeOptions } from 'vs/workbench/services/part/common/partService'; class ToggleZenMode extends Action { @@ -26,8 +26,8 @@ class ToggleZenMode extends Action { this.enabled = !!this.partService; } - public run(): TPromise { - this.partService.toggleZenMode(); + public run(options: IZenModeOptions): TPromise { + this.partService.toggleZenMode(options); return TPromise.as(null); } } diff --git a/src/vs/workbench/electron-browser/main.contribution.ts b/src/vs/workbench/electron-browser/main.contribution.ts index 53fd98f68819fa09efb6457f954b128df91f188e..8439146a057003ff071d1e5fbff6588e57d001be 100644 --- a/src/vs/workbench/electron-browser/main.contribution.ts +++ b/src/vs/workbench/electron-browser/main.contribution.ts @@ -186,11 +186,6 @@ let properties: { [path: string]: IJSONSchema; } = { 'default': false, 'description': nls.localize('restoreFullscreen', "Controls if a window should restore to full screen mode if it was exited in full screen mode.") }, - 'window.fullScreenZenMode': { - 'type': 'boolean', - 'default': true, - 'description': nls.localize('fullScreenZenMode', "Controls if turning on Zen Mode also puts the workbench into full screen mode.") - }, 'window.zoomLevel': { 'type': 'number', 'default': 0, diff --git a/src/vs/workbench/electron-browser/workbench.ts b/src/vs/workbench/electron-browser/workbench.ts index 1ae2e89f860ab37743a2576fee3f8972f8395f9f..21416764928379c618ac4f25e758ae180fa892fb 100644 --- a/src/vs/workbench/electron-browser/workbench.ts +++ b/src/vs/workbench/electron-browser/workbench.ts @@ -41,7 +41,7 @@ import { QuickOpenController } from 'vs/workbench/browser/parts/quickopen/quickO import { getServices } from 'vs/platform/instantiation/common/extensions'; import { IUntitledEditorService } from 'vs/workbench/services/untitled/common/untitledEditorService'; import { WorkbenchEditorService } from 'vs/workbench/services/editor/browser/editorService'; -import { Position, Parts, IPartService, ILayoutOptions } from 'vs/workbench/services/part/common/partService'; +import { Position, Parts, IPartService, ILayoutOptions, IZenModeOptions } from 'vs/workbench/services/part/common/partService'; import { IWorkspace, IWorkspaceContextService } from 'vs/platform/workspace/common/workspace'; import { IStorageService, StorageScope } from 'vs/platform/storage/common/storage'; import { ContextMenuService } from 'vs/workbench/services/contextview/electron-browser/contextmenuService'; @@ -1047,21 +1047,28 @@ export class Workbench implements IPartService { return Identifiers.WORKBENCH_CONTAINER; } - public toggleZenMode(): void { + public toggleZenMode(options?: IZenModeOptions): void { + options = options || {}; this.zenMode.active = !this.zenMode.active; // Check if zen mode transitioned to full screen and if now we are out of zen mode -> we need to go out of full screen let toggleFullScreen = false; if (this.zenMode.active) { - const windowConfig = this.configurationService.getConfiguration(); - toggleFullScreen = !browser.isFullscreen() && windowConfig.window.fullScreenZenMode; + toggleFullScreen = !browser.isFullscreen() && !options.noFullScreen; this.zenMode.transitionedToFullScreen = toggleFullScreen; 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); - this.editorPart.hideTabs(true); + + if (!options.keepStatusBar) { + this.setStatusBarHidden(true, true); + } + if (!options.keepActivityBar) { + this.setActivityBarHidden(true, true); + } + if (!options.keepTabs) { + this.editorPart.hideTabs(true); + } } else { if (this.zenMode.wasPanelVisible) { this.setPanelHidden(false, true); diff --git a/src/vs/workbench/services/part/common/partService.ts b/src/vs/workbench/services/part/common/partService.ts index 5036d29cf889fd865a256058f4ff27dae5c9e4c6..4a0475f01ebca107cfbfd7a66ccc6af2ddabc20e 100644 --- a/src/vs/workbench/services/part/common/partService.ts +++ b/src/vs/workbench/services/part/common/partService.ts @@ -27,6 +27,13 @@ export interface ILayoutOptions { toggleMaximizedPanel?: boolean; } +export interface IZenModeOptions { + noFullScreen?: boolean; + keepStatusBar?: boolean; + keepTabs?: boolean; + keepActivityBar?: boolean; +} + export const IPartService = createDecorator('partService'); export interface IPartService { @@ -116,5 +123,5 @@ export interface IPartService { /** * Toggles the workbench in and out of zen mode - parts get hidden and window goes fullscreen. */ - toggleZenMode(): void; + toggleZenMode(options?: IZenModeOptions): void; } \ No newline at end of file