mirror of
https://github.com/microsoft/vscode.git
synced 2025-12-24 20:26:08 +00:00
Use MutableDisposable for managing listeners
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user