From ecf8cdf0ae419782f20fba9de2715501b10e55f0 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Thu, 13 Jun 2019 18:17:23 -0700 Subject: [PATCH] Use DisposableStore and MutableDisposable for MessageController --- .../contrib/message/messageController.ts | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/src/vs/editor/contrib/message/messageController.ts b/src/vs/editor/contrib/message/messageController.ts index d6e6b5c4c33..6c668ec0e85 100644 --- a/src/vs/editor/contrib/message/messageController.ts +++ b/src/vs/editor/contrib/message/messageController.ts @@ -7,7 +7,7 @@ import 'vs/css!./messageController'; import * as nls from 'vs/nls'; import { TimeoutTimer } from 'vs/base/common/async'; import { KeyCode } from 'vs/base/common/keyCodes'; -import { IDisposable, dispose, Disposable } from 'vs/base/common/lifecycle'; +import { IDisposable, Disposable, DisposableStore, MutableDisposable } from 'vs/base/common/lifecycle'; import { alert } from 'vs/base/browser/ui/aria/aria'; import { Range } from 'vs/editor/common/core/range'; import * as editorCommon from 'vs/editor/common/editorCommon'; @@ -35,8 +35,8 @@ export class MessageController extends Disposable implements editorCommon.IEdito private readonly _editor: ICodeEditor; private readonly _visible: IContextKey; - private _messageWidget?: MessageWidget; - private _messageListeners: IDisposable[] = []; + private readonly _messageWidget = this._register(new MutableDisposable()); + private readonly _messageListeners = this._register(new DisposableStore()); constructor( editor: ICodeEditor, @@ -62,22 +62,22 @@ export class MessageController extends Disposable implements editorCommon.IEdito alert(message); this._visible.set(true); - dispose(this._messageWidget); - this._messageListeners = dispose(this._messageListeners); - this._messageWidget = new MessageWidget(this._editor, position, message); + this._messageWidget.clear(); + this._messageListeners.clear(); + this._messageWidget.value = new MessageWidget(this._editor, position, message); // close on blur, cursor, model change, dispose - this._messageListeners.push(this._editor.onDidBlurEditorText(() => this.closeMessage())); - this._messageListeners.push(this._editor.onDidChangeCursorPosition(() => this.closeMessage())); - this._messageListeners.push(this._editor.onDidDispose(() => this.closeMessage())); - this._messageListeners.push(this._editor.onDidChangeModel(() => this.closeMessage())); + this._messageListeners.add(this._editor.onDidBlurEditorText(() => this.closeMessage())); + this._messageListeners.add(this._editor.onDidChangeCursorPosition(() => this.closeMessage())); + this._messageListeners.add(this._editor.onDidDispose(() => this.closeMessage())); + this._messageListeners.add(this._editor.onDidChangeModel(() => this.closeMessage())); // close after 3s - this._messageListeners.push(new TimeoutTimer(() => this.closeMessage(), 3000)); + this._messageListeners.add(new TimeoutTimer(() => this.closeMessage(), 3000)); // close on mouse move let bounds: Range; - this._messageListeners.push(this._editor.onMouseMove(e => { + this._messageListeners.add(this._editor.onMouseMove(e => { // outside the text area if (!e.target.position) { return; @@ -95,9 +95,9 @@ export class MessageController extends Disposable implements editorCommon.IEdito closeMessage(): void { this._visible.reset(); - this._messageListeners = dispose(this._messageListeners); - if (this._messageWidget) { - this._messageListeners.push(MessageWidget.fadeOut(this._messageWidget)); + this._messageListeners.clear(); + if (this._messageWidget.value) { + this._messageListeners.add(MessageWidget.fadeOut(this._messageWidget.value)); } } -- GitLab