Skip to content

Commit fa93b07

Browse files
committed
microsoft#49054 Do not hide in built viewlets
1 parent 53c5277 commit fa93b07

2 files changed

Lines changed: 10 additions & 12 deletions

File tree

src/vs/workbench/browser/parts/activitybar/activitybarPart.ts

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,6 @@ import { isUndefinedOrNull } from 'vs/base/common/types';
3434
import { IActivityBarService } from 'vs/workbench/services/activityBar/browser/activityBarService';
3535
import { registerSingleton } from 'vs/platform/instantiation/common/extensions';
3636

37-
const SCM_VIEWLET_ID = 'workbench.view.scm';
38-
3937
interface ICachedViewlet {
4038
id: string;
4139
iconUrl?: UriComponents;
@@ -136,7 +134,7 @@ export class ActivitybarPart extends Part implements IActivityBarService {
136134
for (const viewlet of this.viewletService.getViewlets()) {
137135
this.enableCompositeActions(viewlet);
138136
const viewContainer = this.getViewContainer(viewlet.id);
139-
if (viewContainer) {
137+
if (viewContainer && viewContainer.hideIfEmpty) {
140138
const viewDescriptors = this.viewsService.getViewDescriptors(viewContainer);
141139
if (viewDescriptors) {
142140
this.onDidChangeActiveViews(viewlet, viewDescriptors);
@@ -167,7 +165,7 @@ export class ActivitybarPart extends Part implements IActivityBarService {
167165
const viewletDescriptor = this.viewletService.getViewlet(viewlet.getId());
168166
if (viewletDescriptor) {
169167
const viewContainer = this.getViewContainer(viewletDescriptor.id);
170-
if (viewContainer) {
168+
if (viewContainer && viewContainer.hideIfEmpty) {
171169
const viewDescriptors = this.viewsService.getViewDescriptors(viewContainer);
172170
if (viewDescriptors && viewDescriptors.activeViewDescriptors.length === 0) {
173171
this.removeComposite(viewletDescriptor.id, true); // Update the composite bar by hiding
@@ -313,6 +311,10 @@ export class ActivitybarPart extends Part implements IActivityBarService {
313311
}
314312

315313
private shouldBeHidden(viewletId: string, cachedViewlet: ICachedViewlet): boolean {
314+
const viewContainer = this.getViewContainer(viewletId);
315+
if (!viewContainer || !viewContainer.hideIfEmpty) {
316+
return false;
317+
}
316318
return cachedViewlet && cachedViewlet.views && cachedViewlet.views.length
317319
? cachedViewlet.views.every(({ when }) => !!when && !this.contextKeyService.contextMatchesRules(ContextKeyExpr.deserialize(when)))
318320
: viewletId === TEST_VIEW_CONTAINER_ID /* Hide Test viewlet for the first time or it had no views registered before */;
@@ -488,11 +490,6 @@ export class ActivitybarPart extends Part implements IActivityBarService {
488490
}
489491

490492
private getViewContainer(viewletId: string): ViewContainer | undefined {
491-
// TODO: @Joao Remove this after moving SCM Viewlet to ViewContainerViewlet - https://github.com/Microsoft/vscode/issues/49054
492-
if (viewletId === SCM_VIEWLET_ID) {
493-
return undefined;
494-
}
495-
496493
const viewContainerRegistry = Registry.as<IViewContainersRegistry>(ViewContainerExtensions.ViewContainersRegistry);
497494
return viewContainerRegistry.get(viewletId);
498495
}

src/vs/workbench/common/views.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ export interface IViewContainersRegistry {
6767
}
6868

6969
export class ViewContainer {
70-
protected constructor(readonly id: string, readonly extensionId: ExtensionIdentifier) { }
70+
protected constructor(readonly id: string, readonly hideIfEmpty: boolean, readonly extensionId?: ExtensionIdentifier) { }
7171
}
7272

7373
class ViewContainersRegistryImpl implements IViewContainersRegistry {
@@ -84,15 +84,16 @@ class ViewContainersRegistryImpl implements IViewContainersRegistry {
8484
return values(this.viewContainers);
8585
}
8686

87-
registerViewContainer(id: string, extensionId: ExtensionIdentifier): ViewContainer {
87+
registerViewContainer(id: string, extensionId?: ExtensionIdentifier): ViewContainer {
8888
const existing = this.viewContainers.get(id);
8989
if (existing) {
9090
return existing;
9191
}
92+
const hideIfEmpty = id === TEST_VIEW_CONTAINER_ID || !!extensionId;
9293

9394
const viewContainer = new class extends ViewContainer {
9495
constructor() {
95-
super(id, extensionId);
96+
super(id, hideIfEmpty, extensionId);
9697
}
9798
};
9899
this.viewContainers.set(id, viewContainer);

0 commit comments

Comments
 (0)