提交 56c0b50c 编写于 作者: S Sandeep Somavarapu

Complete fix

上级 c5b2d047
...@@ -66,6 +66,7 @@ export class ActivitybarPart extends Part implements IActivityBarService { ...@@ -66,6 +66,7 @@ export class ActivitybarPart extends Part implements IActivityBarService {
private cachedViewlets: ICachedViewlet[] = []; private cachedViewlets: ICachedViewlet[] = [];
private compositeBar: CompositeBar; private compositeBar: CompositeBar;
private compositeActions: { [compositeId: string]: { activityAction: ViewletActivityAction, pinnedAction: ToggleCompositePinnedAction } } = Object.create(null); private compositeActions: { [compositeId: string]: { activityAction: ViewletActivityAction, pinnedAction: ToggleCompositePinnedAction } } = Object.create(null);
private readonly viewletDisposables: Map<string, IDisposable> = new Map<string, IDisposable>();
constructor( constructor(
@IViewletService private readonly viewletService: IViewletService, @IViewletService private readonly viewletService: IViewletService,
...@@ -109,7 +110,7 @@ export class ActivitybarPart extends Part implements IActivityBarService { ...@@ -109,7 +110,7 @@ export class ActivitybarPart extends Part implements IActivityBarService {
// Viewlet registration // Viewlet registration
this._register(this.viewletService.onDidViewletRegister(viewlet => this.onDidRegisterViewlets([viewlet]))); this._register(this.viewletService.onDidViewletRegister(viewlet => this.onDidRegisterViewlets([viewlet])));
this._register(this.viewletService.onDidViewletDeregister(({ id }) => this.removeComposite(id, true))); this._register(this.viewletService.onDidViewletDeregister(({ id }) => this.onDidDeregisterViewlet(id)));
// Activate viewlet action on opening of a viewlet // Activate viewlet action on opening of a viewlet
this._register(this.viewletService.onDidViewletOpen(viewlet => this.onDidViewletOpen(viewlet))); this._register(this.viewletService.onDidViewletOpen(viewlet => this.onDidViewletOpen(viewlet)));
...@@ -132,29 +133,9 @@ export class ActivitybarPart extends Part implements IActivityBarService { ...@@ -132,29 +133,9 @@ export class ActivitybarPart extends Part implements IActivityBarService {
private onDidRegisterExtensions(): void { private onDidRegisterExtensions(): void {
this.removeNotExistingComposites(); this.removeNotExistingComposites();
for (const viewlet of this.viewletService.getViewlets()) {
this.enableCompositeActions(viewlet);
const viewContainer = this.getViewContainer(viewlet.id);
if (viewContainer && viewContainer.hideIfEmpty) {
const viewDescriptors = this.viewsService.getViewDescriptors(viewContainer);
if (viewDescriptors) {
this.onDidChangeActiveViews(viewlet, viewDescriptors);
viewDescriptors.onDidChangeActiveViews(() => this.onDidChangeActiveViews(viewlet, viewDescriptors));
}
}
}
this.saveCachedViewlets(); this.saveCachedViewlets();
} }
private onDidChangeActiveViews(viewlet: ViewletDescriptor, viewDescriptors: IViewDescriptorCollection): void {
if (viewDescriptors.activeViewDescriptors.length) {
this.compositeBar.addComposite(viewlet);
} else {
this.removeComposite(viewlet.id, true);
}
}
private onDidViewletOpen(viewlet: IViewlet): void { private onDidViewletOpen(viewlet: IViewlet): void {
// Update the composite bar by adding // Update the composite bar by adding
...@@ -308,17 +289,37 @@ export class ActivitybarPart extends Part implements IActivityBarService { ...@@ -308,17 +289,37 @@ export class ActivitybarPart extends Part implements IActivityBarService {
this.compositeBar.activateComposite(viewlet.id); this.compositeBar.activateComposite(viewlet.id);
} }
} }
}
for (const viewlet of viewlets) {
this.enableCompositeActions(viewlet);
const viewContainer = this.getViewContainer(viewlet.id); const viewContainer = this.getViewContainer(viewlet.id);
if (viewContainer) { if (viewContainer && viewContainer.hideIfEmpty) {
const viewDescriptors = this.viewsService.getViewDescriptors(viewContainer); const viewDescriptors = this.viewsService.getViewDescriptors(viewContainer);
if (viewDescriptors) { if (viewDescriptors) {
viewDescriptors.onDidChangeActiveViews(() => this.onDidChangeActiveViews(viewlet, viewDescriptors)); this.onDidChangeActiveViews(viewlet, viewDescriptors);
this.viewletDisposables.set(viewlet.id, viewDescriptors.onDidChangeActiveViews(() => this.onDidChangeActiveViews(viewlet, viewDescriptors)));
} }
} }
} }
} }
private onDidDeregisterViewlet(viewletId: string): void {
const disposable = this.viewletDisposables.get(viewletId);
if (disposable) {
disposable.dispose();
}
this.viewletDisposables.delete(viewletId);
this.removeComposite(viewletId, true);
}
private onDidChangeActiveViews(viewlet: ViewletDescriptor, viewDescriptors: IViewDescriptorCollection): void {
if (viewDescriptors.activeViewDescriptors.length) {
this.compositeBar.addComposite(viewlet);
} else {
this.removeComposite(viewlet.id, true);
}
}
private shouldBeHidden(viewletId: string, cachedViewlet: ICachedViewlet): boolean { private shouldBeHidden(viewletId: string, cachedViewlet: ICachedViewlet): boolean {
const viewContainer = this.getViewContainer(viewletId); const viewContainer = this.getViewContainer(viewletId);
if (!viewContainer || !viewContainer.hideIfEmpty) { if (!viewContainer || !viewContainer.hideIfEmpty) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册