Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 14 additions & 3 deletions src/vs/workbench/contrib/files/browser/views/explorerView.ts
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,7 @@ export class ExplorerView extends ViewPane implements IExplorerView {
private viewHasSomeCollapsibleRootItem: IContextKey<boolean>;
private viewVisibleContextKey: IContextKey<boolean>;


private setTreeInputPromise: Promise<void> | undefined;
private horizontalScrolling: boolean | undefined;

private dragHandler!: DelayedDragHandler;
Expand Down Expand Up @@ -522,7 +522,7 @@ export class ExplorerView extends ViewPane implements IExplorerView {

// save view state
this._register(this.storageService.onWillSaveState(() => {
this.storageService.store(ExplorerView.TREE_VIEW_STATE_STORAGE_KEY, JSON.stringify(this.tree.getViewState()), StorageScope.WORKSPACE, StorageTarget.MACHINE);
this.storeTreeViewState();
}));
}

Expand All @@ -540,6 +540,10 @@ export class ExplorerView extends ViewPane implements IExplorerView {
}
}

private storeTreeViewState() {
this.storageService.store(ExplorerView.TREE_VIEW_STATE_STORAGE_KEY, JSON.stringify(this.tree.getViewState()), StorageScope.WORKSPACE, StorageTarget.MACHINE);
}

private setContextKeys(stat: ExplorerItem | null | undefined): void {
const folders = this.contextService.getWorkspace().folders;
const resource = stat ? stat.resource : folders[folders.length - 1].uri;
Expand Down Expand Up @@ -666,6 +670,11 @@ export class ExplorerView extends ViewPane implements IExplorerView {
return Promise.resolve(undefined);
}

// Wait for the last execution to complete before executing
if (this.setTreeInputPromise) {
await this.setTreeInputPromise;
}

const initialInputSetup = !this.tree.getInput();
if (initialInputSetup) {
perf.mark('code/willResolveExplorer');
Expand All @@ -688,7 +697,7 @@ export class ExplorerView extends ViewPane implements IExplorerView {
}

const previousInput = this.tree.getInput();
const promise = this.tree.setInput(input, viewState).then(async () => {
const promise = this.setTreeInputPromise = this.tree.setInput(input, viewState).then(async () => {
if (Array.isArray(input)) {
if (!viewState || previousInput instanceof ExplorerItem) {
// There is no view state for this workspace (we transitioned from a folder workspace?), expand up to five roots.
Expand Down Expand Up @@ -883,6 +892,8 @@ export class ExplorerView extends ViewPane implements IExplorerView {
const treeInputArray = Array.isArray(treeInput) ? treeInput : Array.from(treeInput.children.values());
// Has collapsible root when anything is expanded
this.viewHasSomeCollapsibleRootItem.set(hasExpandedNode(this.tree, treeInputArray));
// synchronize state to cache
this.storeTreeViewState();
}

override dispose(): void {
Expand Down