mirror of
https://github.com/microsoft/vscode.git
synced 2026-08-31 20:46:24 +01:00
@@ -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;
|
||||
@@ -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();
|
||||
}));
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
@@ -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');
|
||||
@@ -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.
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user