From 40502edeaafa3d0e91ed5c8ad1976e2055b1aa11 Mon Sep 17 00:00:00 2001 From: isidor Date: Wed, 21 Dec 2016 17:29:53 +0100 Subject: [PATCH] zenMode: options --- src/vs/platform/windows/common/windows.ts | 1 - .../browser/actions/toggleZenMode.ts | 6 +++--- .../electron-browser/main.contribution.ts | 5 ----- .../workbench/electron-browser/workbench.ts | 21 ++++++++++++------- .../services/part/common/partService.ts | 9 +++++++- 5 files changed, 25 insertions(+), 17 deletions(-) diff --git a/src/vs/platform/windows/common/windows.ts b/src/vs/platform/windows/common/windows.ts index f978e32945f..ee7e6f481c5 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 d542e39b8ee..01718c2a6cd 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 53fd98f6881..8439146a057 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 1ae2e89f860..21416764928 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 5036d29cf88..4a0475f01eb 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 -- GitLab