From 21b55c6e86790c787c9cc751b77b10e4ee1eb326 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Thu, 6 Jun 2019 18:24:13 +0200 Subject: [PATCH] status - :lipstick: --- .../browser/parts/statusbar/statusbarPart.ts | 91 +++++++++---------- 1 file changed, 41 insertions(+), 50 deletions(-) diff --git a/src/vs/workbench/browser/parts/statusbar/statusbarPart.ts b/src/vs/workbench/browser/parts/statusbar/statusbarPart.ts index 22dc2ba4760..a709eaf951f 100644 --- a/src/vs/workbench/browser/parts/statusbar/statusbarPart.ts +++ b/src/vs/workbench/browser/parts/statusbar/statusbarPart.ts @@ -34,7 +34,6 @@ import { StandardMouseEvent } from 'vs/base/browser/mouseEvent'; import { ToggleStatusbarVisibilityAction } from 'vs/workbench/browser/actions/layoutActions'; import { Separator } from 'vs/base/browser/ui/actionbar/actionbar'; import { values } from 'vs/base/common/map'; -import { Event, Emitter } from 'vs/base/common/event'; interface IPendingStatusbarEntry { id: string; @@ -60,12 +59,6 @@ class StatusbarViewModel extends Disposable { private readonly _entries: IStatusbarViewModelEntry[] = []; get entries(): IStatusbarViewModelEntry[] { return this._entries; } - private readonly _onDidEntryVisibilityChange: Emitter = this._register(new Emitter()); - get onDidEntryVisibilityChange(): Event { return this._onDidEntryVisibilityChange.event; } - - private readonly _onDidEntriesChange: Emitter = this._register(new Emitter()); - get onDidEntriesChange(): Event { return this._onDidEntriesChange.event; } - private hidden: Set; constructor(private storageService: IStorageService) { @@ -143,8 +136,8 @@ class StatusbarViewModel extends Disposable { // Sort according to priority this.sort(); - // Events - this._onDidEntriesChange.fire(); + // Mark first/last visible entry + this.markFirstLastVisibleEntry(); return toDisposable(() => this.remove(entry)); } @@ -154,8 +147,8 @@ class StatusbarViewModel extends Disposable { if (index >= 0) { this._entries.splice(index, 1); - // Events - this._onDidEntriesChange.fire(); + // Mark first/last visible entry + this.markFirstLastVisibleEntry(); } } @@ -226,8 +219,8 @@ class StatusbarViewModel extends Disposable { show(entry.container); } - // Events - this._onDidEntryVisibilityChange.fire(entry.id); + // Mark first/last visible entry + this.markFirstLastVisibleEntry(); } } @@ -256,6 +249,41 @@ class StatusbarViewModel extends Disposable { return 0; }); } + + private markFirstLastVisibleEntry(): void { + this.doMarkFirstLastVisibleStatusbarItem(this.getEntries(StatusbarAlignment.LEFT)); + this.doMarkFirstLastVisibleStatusbarItem(this.getEntries(StatusbarAlignment.RIGHT)); + } + + private doMarkFirstLastVisibleStatusbarItem(entries: IStatusbarViewModelEntry[]): void { + let firstVisibleItem: IStatusbarViewModelEntry | undefined; + let lastVisibleItem: IStatusbarViewModelEntry | undefined; + + for (const entry of entries) { + + // Clear previous first + removeClasses(entry.container, 'first-visible-item', 'last-visible-item'); + + const isVisible = !this.isHidden(entry.id); + if (isVisible) { + if (!firstVisibleItem) { + firstVisibleItem = entry; + } + + lastVisibleItem = entry; + } + } + + // Mark: first visible item + if (firstVisibleItem) { + addClass(firstVisibleItem.container, 'first-visible-item'); + } + + // Mark: last visible item + if (lastVisibleItem) { + addClass(lastVisibleItem.container, 'last-visible-item'); + } + } } class ToggleStatusbarEntryVisibilityAction extends Action { @@ -326,8 +354,6 @@ export class StatusbarPart extends Part implements IStatusbarService { private registerListeners(): void { this._register(this.contextService.onDidChangeWorkbenchState(() => this.updateStyles())); - this._register(this.viewModel.onDidEntryVisibilityChange(() => this.markFirstLastVisibleStatusbarItem())); - this._register(this.viewModel.onDidEntriesChange(() => this.markFirstLastVisibleStatusbarItem())); } addEntry(entry: IStatusbarEntry, id: string, name: string, alignment: StatusbarAlignment, priority: number = 0): IStatusbarEntryAccessor { @@ -484,41 +510,6 @@ export class StatusbarPart extends Part implements IStatusbarService { } } - private markFirstLastVisibleStatusbarItem(): void { - this.doMarkFirstLastVisibleStatusbarItem(this.viewModel.getEntries(StatusbarAlignment.LEFT)); - this.doMarkFirstLastVisibleStatusbarItem(this.viewModel.getEntries(StatusbarAlignment.RIGHT)); - } - - private doMarkFirstLastVisibleStatusbarItem(entries: IStatusbarViewModelEntry[]): void { - let firstVisibleItem: IStatusbarViewModelEntry | undefined; - let lastVisibleItem: IStatusbarViewModelEntry | undefined; - - for (const entry of entries) { - - // Clear previous first - removeClasses(entry.container, 'first-visible-item', 'last-visible-item'); - - const isVisible = !this.viewModel.isHidden(entry.id); - if (isVisible) { - if (!firstVisibleItem) { - firstVisibleItem = entry; - } - - lastVisibleItem = entry; - } - } - - // Mark: first visible item - if (firstVisibleItem) { - addClass(firstVisibleItem.container, 'first-visible-item'); - } - - // Mark: last visible item - if (lastVisibleItem) { - addClass(lastVisibleItem.container, 'last-visible-item'); - } - } - private showContextMenu(e: MouseEvent): void { EventHelper.stop(e, true); -- GitLab