diff --git a/src/vs/base/browser/ui/sash/sash.ts b/src/vs/base/browser/ui/sash/sash.ts index 14661a0e54c..1da837bb7a6 100644 --- a/src/vs/base/browser/ui/sash/sash.ts +++ b/src/vs/base/browser/ui/sash/sash.ts @@ -52,16 +52,39 @@ export class Sash { private el: HTMLElement; private layoutProvider: ISashLayoutProvider; - private isDisabled: boolean; private hidden: boolean; private orientation: Orientation; private size: number; private disposables: IDisposable[] = []; - private _onDidStart = new Emitter(); - private _onDidChange = new Emitter(); - private _onDidReset = new Emitter(); - private _onDidEnd = new Emitter(); + private _enabled = true; + get enabled(): boolean { return this._enabled; } + set enabled(enabled: boolean) { + this._enabled = enabled; + + if (enabled) { + removeClass(this.el, 'disabled'); + } else { + addClass(this.el, 'disabled'); + } + + this._onDidEnablementChange.fire(enabled); + } + + private readonly _onDidEnablementChange = new Emitter(); + readonly onDidEnablementChange: Event = this._onDidEnablementChange.event; + + private readonly _onDidStart = new Emitter(); + readonly onDidStart: Event = this._onDidStart.event; + + private readonly _onDidChange = new Emitter(); + readonly onDidChange: Event = this._onDidChange.event; + + private readonly _onDidReset = new Emitter(); + readonly onDidReset: Event = this._onDidReset.event; + + private readonly _onDidEnd = new Emitter(); + readonly onDidEnd: Event = this._onDidEnd.event; constructor(container: HTMLElement, layoutProvider: ISashLayoutProvider, options: ISashOptions = {}) { this.el = append(container, $('.monaco-sash')); @@ -85,27 +108,10 @@ export class Sash { this.setOrientation(options.orientation || Orientation.VERTICAL); - this.isDisabled = false; this.hidden = false; this.layoutProvider = layoutProvider; } - get onDidStart(): Event { - return this._onDidStart.event; - } - - get onDidChange(): Event { - return this._onDidChange.event; - } - - get onDidReset(): Event { - return this._onDidReset.event; - } - - get onDidEnd(): Event { - return this._onDidEnd.event; - } - setOrientation(orientation: Orientation): void { this.orientation = orientation; @@ -127,7 +133,7 @@ export class Sash { private onMouseDown(e: MouseEvent): void { EventHelper.stop(e, false); - if (this.isDisabled) { + if (!this.enabled) { return; } @@ -279,20 +285,6 @@ export class Sash { return this.hidden; } - enable(): void { - removeClass(this.el, 'disabled'); - this.isDisabled = false; - } - - disable(): void { - addClass(this.el, 'disabled'); - this.isDisabled = true; - } - - get enabled(): boolean { - return !this.isDisabled; - } - dispose(): void { if (this.el && this.el.parentElement) { this.el.parentElement.removeChild(this.el); diff --git a/src/vs/base/browser/ui/splitview/splitview.ts b/src/vs/base/browser/ui/splitview/splitview.ts index defd246af80..000e3aacec3 100644 --- a/src/vs/base/browser/ui/splitview/splitview.ts +++ b/src/vs/base/browser/ui/splitview/splitview.ts @@ -461,11 +461,7 @@ export class SplitView implements IDisposable { const expandsUp = reverseViews.map(i => previous = (i.view.maximumSize - i.size > 0) || previous).reverse(); this.sashItems.forEach((s, i) => { - if ((collapsesDown[i] && expandsUp[i + 1]) || (expandsDown[i] && collapsesUp[i + 1])) { - s.sash.enable(); - } else { - s.sash.disable(); - } + s.sash.enabled = (collapsesDown[i] && expandsUp[i + 1]) || (expandsDown[i] && collapsesUp[i + 1]); }); } diff --git a/src/vs/editor/browser/widget/diffEditorWidget.ts b/src/vs/editor/browser/widget/diffEditorWidget.ts index ad3e0569197..76a2ebb47a3 100644 --- a/src/vs/editor/browser/widget/diffEditorWidget.ts +++ b/src/vs/editor/browser/widget/diffEditorWidget.ts @@ -1520,7 +1520,7 @@ class DiffEdtorWidgetSideBySide extends DiffEditorWidgetStyle implements IDiffEd this._sash = this._register(new Sash(this._dataSource.getContainerDomNode(), this)); if (this._disableSash) { - this._sash.disable(); + this._sash.enabled = false; } this._sash.onDidStart(() => this.onSashDragStart()); @@ -1539,9 +1539,9 @@ class DiffEdtorWidgetSideBySide extends DiffEditorWidgetStyle implements IDiffEd this._disableSash = newDisableSash; if (this._disableSash) { - this._sash.disable(); + this._sash.enabled = false; } else { - this._sash.enable(); + this._sash.enabled = true; } } } diff --git a/src/vs/editor/contrib/zoneWidget/zoneWidget.ts b/src/vs/editor/contrib/zoneWidget/zoneWidget.ts index 784aac39e55..832bbfe86b1 100644 --- a/src/vs/editor/contrib/zoneWidget/zoneWidget.ts +++ b/src/vs/editor/contrib/zoneWidget/zoneWidget.ts @@ -459,7 +459,7 @@ export abstract class ZoneWidget implements IHorizontalSashLayoutProvider { if (!this.options.isResizeable) { this._resizeSash.hide(); - this._resizeSash.disable(); + this._resizeSash.enabled = false; } let data: { startY: number; heightInLines: number; };