提交 adbb783e 编写于 作者: J Joao

scm: keep `scmProvider` context key

上级 25cfb9e0
......@@ -12,6 +12,7 @@ import { VIEWLET_ID } from 'vs/workbench/parts/scm/common/scm';
import { ISCMService, ISCMRepository } from 'vs/workbench/services/scm/common/scm';
import { IActivityBarService, NumberBadge } from 'vs/workbench/services/activity/common/activityBarService';
import { IWorkbenchContribution } from 'vs/workbench/common/contributions';
import { IContextKeyService, IContextKey } from 'vs/platform/contextkey/common/contextkey';
import { IStatusbarService, StatusbarAlignment as MainThreadStatusBarAlignment } from 'vs/platform/statusbar/common/statusbar';
export class StatusUpdater implements IWorkbenchContribution {
......@@ -75,12 +76,16 @@ export class StatusBarController implements IWorkbenchContribution {
private statusBarDisposable: IDisposable = EmptyDisposable;
private focusDisposable: IDisposable = EmptyDisposable;
private focusedRepository: ISCMRepository | undefined = undefined;
private focusedProviderContextKey: IContextKey<string | undefined>;
private disposables: IDisposable[] = [];
constructor(
@ISCMService private scmService: ISCMService,
@IStatusbarService private statusbarService: IStatusbarService
@IStatusbarService private statusbarService: IStatusbarService,
@IContextKeyService contextKeyService: IContextKeyService
) {
this.focusedProviderContextKey = contextKeyService.createKey<string | undefined>('scmProvider', void 0);
this.scmService.onDidAddRepository(this.onDidAddRepository, this, this.disposables);
if (this.scmService.repositories.length > 0) {
......@@ -98,6 +103,12 @@ export class StatusBarController implements IWorkbenchContribution {
const removeDisposable = onDidRemove(() => {
disposable.dispose();
this.disposables = this.disposables.filter(d => d !== removeDisposable);
if (this.scmService.repositories.length === 0) {
this.focusedProviderContextKey.set(undefined);
} else if (this.focusedRepository === repository) {
this.scmService.repositories[0].focus();
}
});
const disposable = combinedDisposable([changeDisposable, removeDisposable]);
......@@ -109,6 +120,11 @@ export class StatusBarController implements IWorkbenchContribution {
}
private onDidFocusRepository(repository: ISCMRepository): void {
if (this.focusedRepository !== repository) {
this.focusedRepository = repository;
this.focusedProviderContextKey.set(repository.provider.id);
}
this.focusDisposable.dispose();
this.focusDisposable = repository.provider.onDidChange(() => this.render(repository));
this.render(repository);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册