Skip to content

Commit b314697

Browse files
committed
1 parent 3f8a1a4 commit b314697

3 files changed

Lines changed: 14 additions & 8 deletions

File tree

src/vs/workbench/common/views.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,11 @@ export interface IAddedViewDescriptorRef extends IViewDescriptorRef {
237237
size?: number;
238238
}
239239

240+
export interface IAddedViewDescriptorState {
241+
viewDescriptor: IViewDescriptor,
242+
collapsed?: boolean;
243+
}
244+
240245
export interface IViewContainerModel {
241246

242247
readonly title: string;

src/vs/workbench/services/views/browser/viewDescriptorService.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -337,7 +337,7 @@ export class ViewDescriptorService extends Disposable implements IViewDescriptor
337337

338338
private moveViews(views: IViewDescriptor[], from: ViewContainer, to: ViewContainer, skipCacheUpdate?: boolean): void {
339339
this.removeViews(from, views);
340-
this.addViews(to, views);
340+
this.addViews(to, views, true);
341341

342342
const oldLocation = this.getViewContainerLocation(from);
343343
const newLocation = this.getViewContainerLocation(to);
@@ -676,14 +676,14 @@ export class ViewDescriptorService extends Disposable implements IViewDescriptor
676676
});
677677
}
678678

679-
private addViews(container: ViewContainer, views: IViewDescriptor[]): void {
679+
private addViews(container: ViewContainer, views: IViewDescriptor[], expandViews?: boolean): void {
680680
// Update in memory cache
681681
views.forEach(view => {
682682
this.cachedViewInfo.set(view.id, { containerId: container.id });
683683
this.getOrCreateDefaultViewLocationContextKey(view).set(this.getDefaultContainerById(view.id) === container);
684684
});
685685

686-
this.getViewContainerModel(container).add(views);
686+
this.getViewContainerModel(container).add(views.map(view => { return { viewDescriptor: view, collapsed: expandViews ? false : undefined }; }));
687687
}
688688

689689
private removeViews(container: ViewContainer, views: IViewDescriptor[]): void {

src/vs/workbench/services/views/common/viewContainerModel.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* Licensed under the MIT License. See License.txt in the project root for license information.
44
*--------------------------------------------------------------------------------------------*/
55

6-
import { ViewContainer, IViewsRegistry, IViewDescriptor, Extensions as ViewExtensions, IViewContainerModel, IAddedViewDescriptorRef, IViewDescriptorRef } from 'vs/workbench/common/views';
6+
import { ViewContainer, IViewsRegistry, IViewDescriptor, Extensions as ViewExtensions, IViewContainerModel, IAddedViewDescriptorRef, IViewDescriptorRef, IAddedViewDescriptorState } from 'vs/workbench/common/views';
77
import { IContextKeyService, IReadableSet } from 'vs/platform/contextkey/common/contextkey';
88
import { IStorageService, StorageScope, IWorkspaceStorageChangeEvent } from 'vs/platform/storage/common/storage';
99
import { Registry } from 'vs/platform/registry/common/platform';
@@ -461,12 +461,13 @@ export class ViewContainerModel extends Disposable implements IViewContainerMode
461461
});
462462
}
463463

464-
add(viewDescriptors: IViewDescriptor[]): void {
464+
add(addedViewDescriptorStates: IAddedViewDescriptorState[]): void {
465465
const addedItems: IViewDescriptorItem[] = [];
466466
const addedActiveDescriptors: IViewDescriptor[] = [];
467467
const addedVisibleItems: { index: number, viewDescriptor: IViewDescriptor, size?: number, collapsed: boolean; }[] = [];
468468

469-
for (const viewDescriptor of viewDescriptors) {
469+
for (const addedViewDescriptorState of addedViewDescriptorStates) {
470+
const viewDescriptor = addedViewDescriptorState.viewDescriptor;
470471

471472
if (viewDescriptor.when) {
472473
for (const key of viewDescriptor.when.keys()) {
@@ -482,13 +483,13 @@ export class ViewContainerModel extends Disposable implements IViewContainerMode
482483
} else {
483484
state.visibleGlobal = isUndefinedOrNull(state.visibleGlobal) ? !viewDescriptor.hideByDefault : state.visibleGlobal;
484485
}
485-
state.collapsed = isUndefinedOrNull(state.collapsed) ? !!viewDescriptor.collapsed : state.collapsed;
486+
state.collapsed = isUndefinedOrNull(addedViewDescriptorState.collapsed) ? (isUndefinedOrNull(state.collapsed) ? !!viewDescriptor.collapsed : state.collapsed) : addedViewDescriptorState.collapsed;
486487
} else {
487488
state = {
488489
active: false,
489490
visibleGlobal: !viewDescriptor.hideByDefault,
490491
visibleWorkspace: !viewDescriptor.hideByDefault,
491-
collapsed: !!viewDescriptor.collapsed,
492+
collapsed: isUndefinedOrNull(addedViewDescriptorState.collapsed) ? !!viewDescriptor.collapsed : addedViewDescriptorState.collapsed,
492493
};
493494
}
494495
this.viewDescriptorsState.set(viewDescriptor.id, state);

0 commit comments

Comments
 (0)