diff --git a/src/vs/workbench/api/common/extHostQuickOpen.ts b/src/vs/workbench/api/common/extHostQuickOpen.ts index 670eb3dc12e..f4c9f456c13 100644 --- a/src/vs/workbench/api/common/extHostQuickOpen.ts +++ b/src/vs/workbench/api/common/extHostQuickOpen.ts @@ -6,7 +6,7 @@ import { asPromise } from 'vs/base/common/async'; import { CancellationToken } from 'vs/base/common/cancellation'; import { Emitter } from 'vs/base/common/event'; -import { Disposable } from 'vs/base/common/lifecycle'; +import { dispose, IDisposable } from 'vs/base/common/lifecycle'; import { ExtHostCommands } from 'vs/workbench/api/common/extHostCommands'; import { IExtHostWorkspaceProvider } from 'vs/workbench/api/common/extHostWorkspace'; import { InputBox, InputBoxOptions, QuickInput, QuickInputButton, QuickPick, QuickPickItem, QuickPickOptions, WorkspaceFolder, WorkspaceFolderPickOptions } from 'vscode'; @@ -229,7 +229,7 @@ export class ExtHostQuickOpen implements ExtHostQuickOpenShape { } } -class ExtHostQuickInput extends Disposable implements QuickInput { +class ExtHostQuickInput implements QuickInput { private static _nextId = 1; _id = ExtHostQuickPick._nextId++; @@ -246,17 +246,22 @@ class ExtHostQuickInput extends Disposable implements QuickInput { private _placeholder: string; private _buttons: QuickInputButton[] = []; private _handlesToButtons = new Map(); - private _onDidAcceptEmitter = this._register(new Emitter()); - private _onDidChangeValueEmitter = this._register(new Emitter()); - private _onDidTriggerButtonEmitter = this._register(new Emitter()); - private _onDidHideEmitter = this._register(new Emitter()); + private _onDidAcceptEmitter = new Emitter(); + private _onDidChangeValueEmitter = new Emitter(); + private _onDidTriggerButtonEmitter = new Emitter(); + private _onDidHideEmitter = new Emitter(); private _updateTimeout: any; private _pendingUpdate: TransferQuickInput = { id: this._id }; private _disposed = false; + protected _disposables: IDisposable[] = [ + this._onDidTriggerButtonEmitter, + this._onDidHideEmitter, + this._onDidAcceptEmitter, + this._onDidChangeValueEmitter + ]; constructor(protected _proxy: MainThreadQuickOpenShape, protected _extensionId: ExtensionIdentifier, private _onDidDispose: () => void) { - super(); } get title() { @@ -397,9 +402,9 @@ class ExtHostQuickInput extends Disposable implements QuickInput { if (this._disposed) { return; } - super.dispose(); this._disposed = true; this._fireDidHide(); + this._disposables = dispose(this._disposables); if (this._updateTimeout) { clearTimeout(this._updateTimeout); this._updateTimeout = undefined; @@ -481,12 +486,16 @@ class ExtHostQuickPick extends ExtHostQuickInput implem private _matchOnDescription = true; private _matchOnDetail = true; private _activeItems: T[] = []; - private _onDidChangeActiveEmitter = this._register(new Emitter()); + private _onDidChangeActiveEmitter = new Emitter(); private _selectedItems: T[] = []; - private _onDidChangeSelectionEmitter = this._register(new Emitter()); + private _onDidChangeSelectionEmitter = new Emitter(); constructor(proxy: MainThreadQuickOpenShape, extensionId: ExtensionIdentifier, enableProposedApi: boolean, onDispose: () => void) { super(proxy, extensionId, onDispose); + this._disposables.push( + this._onDidChangeActiveEmitter, + this._onDidChangeSelectionEmitter, + ); this.update({ type: 'quickPick' }); }