Use MutableDisposable for managing listeners

This commit is contained in:
Matt Bierner
2019-06-12 14:00:32 -07:00
parent e6f9ffe8f3
commit c244a40e5a

View File

@@ -6,7 +6,7 @@
import 'vs/css!./media/statusbarpart';
import * as nls from 'vs/nls';
import { toErrorMessage } from 'vs/base/common/errorMessage';
import { dispose, IDisposable, Disposable, toDisposable } from 'vs/base/common/lifecycle';
import { dispose, IDisposable, Disposable, toDisposable, MutableDisposable } from 'vs/base/common/lifecycle';
import { OcticonLabel } from 'vs/base/browser/ui/octiconLabel/octiconLabel';
import { Registry } from 'vs/platform/registry/common/platform';
import { ICommandService } from 'vs/platform/commands/common/commands';
@@ -636,10 +636,10 @@ class StatusbarEntryItem extends Disposable {
private labelContainer: HTMLElement;
private label: OcticonLabel;
private foregroundListener: IDisposable | undefined;
private backgroundListener: IDisposable | undefined;
private readonly foregroundListener = this._register(new MutableDisposable());
private readonly backgroundListener = this._register(new MutableDisposable());
private commandListener: IDisposable | undefined;
private readonly commandListener = this._register(new MutableDisposable());
constructor(
private container: HTMLElement,
@@ -692,11 +692,10 @@ class StatusbarEntryItem extends Disposable {
// Update: Command
if (!this.entry || entry.command !== this.entry.command) {
dispose(this.commandListener);
this.commandListener = undefined;
this.commandListener.clear();
if (entry.command) {
this.commandListener = addDisposableListener(this.labelContainer, EventType.CLICK, () => this.executeCommand(entry.command!, entry.arguments));
this.commandListener.value = addDisposableListener(this.labelContainer, EventType.CLICK, () => this.executeCommand(entry.command!, entry.arguments));
removeClass(this.labelContainer, 'disabled');
} else {
@@ -759,11 +758,9 @@ class StatusbarEntryItem extends Disposable {
let colorResult: string | null = null;
if (isBackground) {
dispose(this.backgroundListener);
this.backgroundListener = undefined;
this.backgroundListener.clear();
} else {
dispose(this.foregroundListener);
this.foregroundListener = undefined;
this.foregroundListener.clear();
}
if (color) {
@@ -781,9 +778,9 @@ class StatusbarEntryItem extends Disposable {
});
if (isBackground) {
this.backgroundListener = listener;
this.backgroundListener.value = listener;
} else {
this.foregroundListener = listener;
this.foregroundListener.value = listener;
}
} else {
colorResult = color;