diff --git a/src/vs/workbench/browser/parts/editor/editorPart.ts b/src/vs/workbench/browser/parts/editor/editorPart.ts index f033d29b1a585829f6469a03063702354e00bbac..0b58b8a33fd07592a031ee23566e229d830d8747 100644 --- a/src/vs/workbench/browser/parts/editor/editorPart.ts +++ b/src/vs/workbench/browser/parts/editor/editorPart.ts @@ -104,6 +104,9 @@ export class EditorPart extends Part implements IEditorPart, IEditorGroupService private pendingEditorInputsToClose: EditorIdentifier[]; private pendingEditorInputCloseTimeout: number; + private onLayoutEmitter = new Emitter(); + public onLayout = this.onLayoutEmitter.event; + constructor( id: string, restoreFromStorage: boolean, @@ -1191,6 +1194,8 @@ export class EditorPart extends Part implements IEditorPart, IEditorGroupService this.dimension = sizes[1]; this.editorGroupsControl.layout(this.dimension); + this.onLayoutEmitter.fire(dimension); + return sizes; } diff --git a/src/vs/workbench/electron-browser/workbench.ts b/src/vs/workbench/electron-browser/workbench.ts index 373522006c3dd9df8c83a0474a79cdbfa8561042..77b924928db69533c1c925935f0bcc96633975db 100644 --- a/src/vs/workbench/electron-browser/workbench.ts +++ b/src/vs/workbench/electron-browser/workbench.ts @@ -9,7 +9,7 @@ import 'vs/css!./media/workbench'; import { TPromise, ValueCallback } from 'vs/base/common/winjs.base'; import { IDisposable, dispose } from 'vs/base/common/lifecycle'; -import Event, { Emitter } from 'vs/base/common/event'; +import Event, { Emitter, chain } from 'vs/base/common/event'; import DOM = require('vs/base/browser/dom'); import { Builder, $ } from 'vs/base/browser/builder'; import { Delayer } from 'vs/base/common/async'; @@ -236,6 +236,12 @@ export class Workbench implements IPartService { return this._onTitleBarVisibilityChange.event; } + public get onEditorLayout(): Event { + return chain(this.editorPart.onLayout) + .map(() => void 0) + .event; + } + /** * Starts the workbench and creates the HTML elements on the container. A workbench can only be started * once. Use the shutdown function to free up resources created by the workbench on startup. diff --git a/src/vs/workbench/parts/watermark/electron-browser/watermark.css b/src/vs/workbench/parts/watermark/electron-browser/watermark.css index 98e7b49601cf7165eb391d1d3c615056bb51333b..9bf79ce1d5264a0264fe7990ff4dc797e11be8c3 100644 --- a/src/vs/workbench/parts/watermark/electron-browser/watermark.css +++ b/src/vs/workbench/parts/watermark/electron-browser/watermark.css @@ -27,19 +27,11 @@ border-spacing: 13px 17px; } -@media (min-height: 501px) { - .monaco-workbench > .part.editor.empty > .content > .watermark { - display: block; - } -} - -@media (max-height: 500px) { - .monaco-workbench > .part.editor.empty > .content > .watermark { - display: none; - } - .monaco-workbench .part.editor.empty { - background-position-y: 50%; - } +.monaco-workbench > .part.editor.empty.max-height-478px > .content > .watermark { + display: none; +} +.monaco-workbench .part.editor.empty.max-height-478px { + background-position-y: 50%; } .monaco-workbench > .part.editor.empty > .content > .watermark dl { diff --git a/src/vs/workbench/parts/watermark/electron-browser/watermark.ts b/src/vs/workbench/parts/watermark/electron-browser/watermark.ts index ec7dbbb33eae9b9fe2bfc536ed2a83678a2ccba7..0c8015001eac7bacc559a137f5b8ded119fee447 100644 --- a/src/vs/workbench/parts/watermark/electron-browser/watermark.ts +++ b/src/vs/workbench/parts/watermark/electron-browser/watermark.ts @@ -175,9 +175,15 @@ export class WatermarkContribution implements IWorkbenchContribution { }); }); }; + const layout = () => { + const { height } = container.getBoundingClientRect(); + container.classList[height <= 478 ? 'add' : 'remove']('max-height-478px'); + }; update(); - watermark.build(container.firstChild as HTMLElement, 0); + watermark.build(container.firstElementChild as HTMLElement, 0); + layout(); this.toDispose.push(this.keybindingService.onDidUpdateKeybindings(update)); + this.toDispose.push(this.partService.onEditorLayout(layout)); } public dispose(): void { diff --git a/src/vs/workbench/services/part/common/partService.ts b/src/vs/workbench/services/part/common/partService.ts index 47cca47baed27155ddad202ad73eda7b5a1a6884..e52358f54b8f6eac381c41c42caaa1d89fa070c2 100644 --- a/src/vs/workbench/services/part/common/partService.ts +++ b/src/vs/workbench/services/part/common/partService.ts @@ -36,6 +36,11 @@ export interface IPartService { */ onTitleBarVisibilityChange: Event; + /** + * Emits when the editor part's layout changes. + */ + onEditorLayout: Event; + /** * Asks the part service to layout all parts. */ diff --git a/src/vs/workbench/test/workbenchTestServices.ts b/src/vs/workbench/test/workbenchTestServices.ts index 6fcfa139324a1cbae24dd1b117c116e4eeaceb8a..28e07e643377928c04834bdf4550f12537f8312b 100644 --- a/src/vs/workbench/test/workbenchTestServices.ts +++ b/src/vs/workbench/test/workbenchTestServices.ts @@ -240,11 +240,16 @@ export class TestPartService implements IPartService { public _serviceBrand: any; private _onTitleBarVisibilityChange = new Emitter(); + private _onEditorLayout = new Emitter(); public get onTitleBarVisibilityChange(): Event { return this._onTitleBarVisibilityChange.event; } + public get onEditorLayout(): Event { + return this._onEditorLayout.event; + } + public layout(): void { } public isCreated(): boolean {