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