Skip to content

Commit cfd71c7

Browse files
committed
adopt new showActivity signature
1 parent a70478c commit cfd71c7

2 files changed

Lines changed: 25 additions & 7 deletions

File tree

src/vs/base/common/lifecycle.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,22 @@ export class Disposables extends Disposable {
7373
}
7474
}
7575

76+
export class OneDisposable implements IDisposable {
77+
78+
private _value: IDisposable;
79+
80+
set value(value: IDisposable) {
81+
if (this._value) {
82+
this._value.dispose();
83+
}
84+
this._value = value;
85+
}
86+
87+
dispose() {
88+
this.value = null;
89+
}
90+
}
91+
7692
export interface IReference<T> extends IDisposable {
7793
readonly object: T;
7894
}

src/vs/workbench/parts/scm/browser/scmViewlet.ts

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import { TPromise } from 'vs/base/common/winjs.base';
1212
import { chain } from 'vs/base/common/event';
1313
import { Throttler } from 'vs/base/common/async';
1414
import { domEvent } from 'vs/base/browser/event';
15-
import { IDisposable, dispose, empty as EmptyDisposable } from 'vs/base/common/lifecycle';
15+
import { IDisposable, dispose, empty as EmptyDisposable, OneDisposable } from 'vs/base/common/lifecycle';
1616
import { Builder, Dimension } from 'vs/base/browser/builder';
1717
import { Viewlet } from 'vs/workbench/browser/viewlet';
1818
import { append, $, toggleClass } from 'vs/base/browser/dom';
@@ -157,6 +157,7 @@ export class SCMViewlet extends Viewlet {
157157
private list: List<ISCMResourceGroup | ISCMResource>;
158158
private menus: SCMMenus;
159159
private providerChangeDisposable: IDisposable = EmptyDisposable;
160+
private badgeHandle = new OneDisposable();
160161
private disposables: IDisposable[] = [];
161162

162163
constructor(
@@ -175,7 +176,7 @@ export class SCMViewlet extends Viewlet {
175176
super(VIEWLET_ID, telemetryService);
176177

177178
this.menus = this.instantiationService.createInstance(SCMMenus);
178-
this.disposables.push(this.menus);
179+
this.disposables.push(this.menus, this.badgeHandle);
179180
}
180181

181182
private setActiveProvider(activeProvider: ISCMProvider | undefined): void {
@@ -250,11 +251,12 @@ export class SCMViewlet extends Viewlet {
250251
.reduce<number>((r, g) => r + g.resources.length, 0);
251252

252253
// TODO: make number contributable by provider
253-
const badge = count > 0
254-
? new NumberBadge(count, num => localize('scmPendingChangesBadge', '{0} pending changes', num))
255-
: null;
256-
257-
this.activityBarService.showActivity(VIEWLET_ID, badge, 'scm-viewlet-label');
254+
if (count > 0) {
255+
const badge = new NumberBadge(count, num => localize('scmPendingChangesBadge', '{0} pending changes', num));
256+
this.badgeHandle.value = this.activityBarService.showActivity(VIEWLET_ID, badge, 'scm-viewlet-label');
257+
} else {
258+
this.badgeHandle.value = null;
259+
}
258260

259261
const elements = provider.resources
260262
.reduce<(ISCMResourceGroup | ISCMResource)[]>((r, g) => [...r, g, ...g.resources], []);

0 commit comments

Comments
 (0)