Skip to content

Commit e80d909

Browse files
committed
scm: don't use ResourceTree model if view mode is List
related to microsoft#82203
1 parent 675c8d8 commit e80d909

2 files changed

Lines changed: 32 additions & 7 deletions

File tree

src/vs/base/common/resourceTree.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,10 @@ class BranchNode<T, C> extends Node<C> implements IBranchNode<T, C> {
6969
delete(path: string): void {
7070
this._children.delete(path);
7171
}
72+
73+
clear(): void {
74+
this._children.clear();
75+
}
7276
}
7377

7478
class LeafNode<T, C> extends Node<C> implements ILeafNode<T, C> {
@@ -195,4 +199,8 @@ export class ResourceTree<T extends NonNullable<any>, C> {
195199
node.delete(name);
196200
return child.element;
197201
}
202+
203+
clear(): void {
204+
this.root.clear();
205+
}
198206
}

src/vs/workbench/contrib/scm/browser/repositoryPanel.ts

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -403,6 +403,17 @@ class ViewModel {
403403
get mode(): ViewModelMode { return this._mode; }
404404
set mode(mode: ViewModelMode) {
405405
this._mode = mode;
406+
407+
for (const item of this.items) {
408+
item.tree.clear();
409+
410+
if (mode === ViewModelMode.Tree) {
411+
for (const resource of item.resources) {
412+
item.tree.add(resource.sourceUri, resource);
413+
}
414+
}
415+
}
416+
406417
this.refresh();
407418
this._onDidChangeMode.fire(mode);
408419
}
@@ -432,10 +443,12 @@ class ViewModel {
432443
group.onDidSplice(splice => this.onDidSpliceGroup(item, splice))
433444
);
434445

435-
const item = { group, resources, tree, disposable };
446+
const item: IGroupItem = { group, resources, tree, disposable };
436447

437-
for (const resource of resources) {
438-
item.tree.add(resource.sourceUri, resource);
448+
if (this._mode === ViewModelMode.Tree) {
449+
for (const resource of resources) {
450+
item.tree.add(resource.sourceUri, resource);
451+
}
439452
}
440453

441454
itemsToInsert.push(item);
@@ -451,14 +464,18 @@ class ViewModel {
451464
}
452465

453466
private onDidSpliceGroup(item: IGroupItem, { start, deleteCount, toInsert }: ISplice<ISCMResource>): void {
454-
for (const resource of toInsert) {
455-
item.tree.add(resource.sourceUri, resource);
467+
if (this._mode === ViewModelMode.Tree) {
468+
for (const resource of toInsert) {
469+
item.tree.add(resource.sourceUri, resource);
470+
}
456471
}
457472

458473
const deleted = item.resources.splice(start, deleteCount, ...toInsert);
459474

460-
for (const resource of deleted) {
461-
item.tree.delete(resource.sourceUri);
475+
if (this._mode === ViewModelMode.Tree) {
476+
for (const resource of deleted) {
477+
item.tree.delete(resource.sourceUri);
478+
}
462479
}
463480

464481
this.refresh(item);

0 commit comments

Comments
 (0)