Use DisposableStore instead of IDisposable[]
This commit is contained in:
parent
32134adfaa
commit
2ae83d6123
|
@ -10,7 +10,7 @@ import { IconLabel } from 'vs/base/browser/ui/iconLabel/iconLabel';
|
|||
import { tail } from 'vs/base/common/arrays';
|
||||
import { timeout } from 'vs/base/common/async';
|
||||
import { KeyCode, KeyMod } from 'vs/base/common/keyCodes';
|
||||
import { combinedDisposable, dispose, IDisposable } from 'vs/base/common/lifecycle';
|
||||
import { combinedDisposable, DisposableStore } from 'vs/base/common/lifecycle';
|
||||
import { isEqual } from 'vs/base/common/resources';
|
||||
import { URI } from 'vs/base/common/uri';
|
||||
import 'vs/css!./media/breadcrumbscontrol';
|
||||
|
@ -50,7 +50,7 @@ import { ILabelService } from 'vs/platform/label/common/label';
|
|||
|
||||
class Item extends BreadcrumbsItem {
|
||||
|
||||
private readonly _disposables: IDisposable[] = [];
|
||||
private readonly _disposables = new DisposableStore();
|
||||
|
||||
constructor(
|
||||
readonly element: BreadcrumbElement,
|
||||
|
@ -61,7 +61,7 @@ class Item extends BreadcrumbsItem {
|
|||
}
|
||||
|
||||
dispose(): void {
|
||||
dispose(this._disposables);
|
||||
this._disposables.dispose();
|
||||
}
|
||||
|
||||
equals(other: BreadcrumbsItem): boolean {
|
||||
|
@ -88,7 +88,7 @@ class Item extends BreadcrumbsItem {
|
|||
fileDecorations: { colors: this.options.showDecorationColors, badges: false },
|
||||
});
|
||||
dom.addClass(container, FileKind[this.element.kind].toLowerCase());
|
||||
this._disposables.push(label);
|
||||
this._disposables.add(label);
|
||||
|
||||
} else if (this.element instanceof OutlineModel) {
|
||||
// has outline element but not in one
|
||||
|
@ -101,7 +101,7 @@ class Item extends BreadcrumbsItem {
|
|||
// provider
|
||||
let label = new IconLabel(container);
|
||||
label.setLabel(this.element.provider.displayName);
|
||||
this._disposables.push(label);
|
||||
this._disposables.add(label);
|
||||
|
||||
} else if (this.element instanceof OutlineElement) {
|
||||
// symbol
|
||||
|
@ -114,7 +114,7 @@ class Item extends BreadcrumbsItem {
|
|||
let label = new IconLabel(container);
|
||||
let title = this.element.symbol.name.replace(/\r|\n|\r\n/g, '\u23CE');
|
||||
label.setLabel(title);
|
||||
this._disposables.push(label);
|
||||
this._disposables.add(label);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -147,8 +147,8 @@ export class BreadcrumbsControl {
|
|||
readonly domNode: HTMLDivElement;
|
||||
private readonly _widget: BreadcrumbsWidget;
|
||||
|
||||
private _disposables = new Array<IDisposable>();
|
||||
private _breadcrumbsDisposables = new Array<IDisposable>();
|
||||
private readonly _disposables = new DisposableStore();
|
||||
private readonly _breadcrumbsDisposables = new DisposableStore();
|
||||
private _breadcrumbsPickerShowing = false;
|
||||
private _breadcrumbsPickerIgnoreOnceItem: BreadcrumbsItem | undefined;
|
||||
|
||||
|
@ -178,7 +178,7 @@ export class BreadcrumbsControl {
|
|||
this._widget.onDidSelectItem(this._onSelectEvent, this, this._disposables);
|
||||
this._widget.onDidFocusItem(this._onFocusEvent, this, this._disposables);
|
||||
this._widget.onDidChangeFocus(this._updateCkBreadcrumbsActive, this, this._disposables);
|
||||
this._disposables.push(attachBreadcrumbsStyler(this._widget, this._themeService, { breadcrumbsBackground: _options.breadcrumbsBackground }));
|
||||
this._disposables.add(attachBreadcrumbsStyler(this._widget, this._themeService, { breadcrumbsBackground: _options.breadcrumbsBackground }));
|
||||
|
||||
this._ckBreadcrumbsPossible = BreadcrumbsControl.CK_BreadcrumbsPossible.bindTo(this._contextKeyService);
|
||||
this._ckBreadcrumbsVisible = BreadcrumbsControl.CK_BreadcrumbsVisible.bindTo(this._contextKeyService);
|
||||
|
@ -186,12 +186,12 @@ export class BreadcrumbsControl {
|
|||
|
||||
this._cfUseQuickPick = BreadcrumbsConfig.UseQuickPick.bindTo(_configurationService);
|
||||
|
||||
this._disposables.push(breadcrumbsService.register(this._editorGroup.id, this._widget));
|
||||
this._disposables.add(breadcrumbsService.register(this._editorGroup.id, this._widget));
|
||||
}
|
||||
|
||||
dispose(): void {
|
||||
this._disposables = dispose(this._disposables);
|
||||
this._breadcrumbsDisposables = dispose(this._breadcrumbsDisposables);
|
||||
this._disposables.dispose();
|
||||
this._breadcrumbsDisposables.dispose();
|
||||
this._ckBreadcrumbsPossible.reset();
|
||||
this._ckBreadcrumbsVisible.reset();
|
||||
this._ckBreadcrumbsActive.reset();
|
||||
|
@ -209,13 +209,13 @@ export class BreadcrumbsControl {
|
|||
}
|
||||
|
||||
hide(): void {
|
||||
this._breadcrumbsDisposables = dispose(this._breadcrumbsDisposables);
|
||||
this._breadcrumbsDisposables.clear();
|
||||
this._ckBreadcrumbsVisible.set(false);
|
||||
dom.toggleClass(this.domNode, 'hidden', true);
|
||||
}
|
||||
|
||||
update(): boolean {
|
||||
this._breadcrumbsDisposables = dispose(this._breadcrumbsDisposables);
|
||||
this._breadcrumbsDisposables.clear();
|
||||
|
||||
// honor diff editors and such
|
||||
let input = this._editorGroup.activeEditor;
|
||||
|
@ -252,10 +252,12 @@ export class BreadcrumbsControl {
|
|||
};
|
||||
const listener = model.onDidUpdate(updateBreadcrumbs);
|
||||
updateBreadcrumbs();
|
||||
this._breadcrumbsDisposables = [model, listener];
|
||||
this._breadcrumbsDisposables.clear();
|
||||
this._breadcrumbsDisposables.add(model);
|
||||
this._breadcrumbsDisposables.add(listener);
|
||||
|
||||
// close picker on hide/update
|
||||
this._breadcrumbsDisposables.push({
|
||||
this._breadcrumbsDisposables.add({
|
||||
dispose: () => {
|
||||
if (this._breadcrumbsPickerShowing) {
|
||||
this._contextViewService.hideContextView(this);
|
||||
|
|
Loading…
Reference in a new issue