提交 09ed1c7c 编写于 作者: A Alex Ross

Synchronize refreshes to custom view tree in the renderer

Fixes #90082
上级 344f1a10
...@@ -151,6 +151,8 @@ export class CustomTreeView extends Disposable implements ITreeView { ...@@ -151,6 +151,8 @@ export class CustomTreeView extends Disposable implements ITreeView {
private readonly _onDidChangeTitle: Emitter<string> = this._register(new Emitter<string>()); private readonly _onDidChangeTitle: Emitter<string> = this._register(new Emitter<string>());
readonly onDidChangeTitle: Event<string> = this._onDidChangeTitle.event; readonly onDidChangeTitle: Event<string> = this._onDidChangeTitle.event;
private readonly _onDidCompleteRefresh: Emitter<void> = this._register(new Emitter<void>());
constructor( constructor(
private id: string, private id: string,
private _title: string, private _title: string,
...@@ -500,8 +502,11 @@ export class CustomTreeView extends Disposable implements ITreeView { ...@@ -500,8 +502,11 @@ export class CustomTreeView extends Disposable implements ITreeView {
return 0; return 0;
} }
refresh(elements?: ITreeItem[]): Promise<void> { async refresh(elements?: ITreeItem[]): Promise<void> {
if (this.dataProvider && this.tree) { if (this.dataProvider && this.tree) {
if (this.refreshing) {
await Event.toPromise(this._onDidCompleteRefresh.event);
}
if (!elements) { if (!elements) {
elements = [this.root]; elements = [this.root];
// remove all waiting elements to refresh if root is asked to refresh // remove all waiting elements to refresh if root is asked to refresh
...@@ -526,7 +531,7 @@ export class CustomTreeView extends Disposable implements ITreeView { ...@@ -526,7 +531,7 @@ export class CustomTreeView extends Disposable implements ITreeView {
} }
} }
} }
return Promise.resolve(undefined); return undefined;
} }
async expand(itemOrItems: ITreeItem | ITreeItem[]): Promise<void> { async expand(itemOrItems: ITreeItem | ITreeItem[]): Promise<void> {
...@@ -578,6 +583,7 @@ export class CustomTreeView extends Disposable implements ITreeView { ...@@ -578,6 +583,7 @@ export class CustomTreeView extends Disposable implements ITreeView {
this.refreshing = true; this.refreshing = true;
await Promise.all(elements.map(element => tree.updateChildren(element, true, true))); await Promise.all(elements.map(element => tree.updateChildren(element, true, true)));
this.refreshing = false; this.refreshing = false;
this._onDidCompleteRefresh.fire();
this.updateContentAreas(); this.updateContentAreas();
if (this.focused) { if (this.focused) {
this.focus(false); this.focus(false);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册