From ed5a54504746723394f7e8f98309278bc518f3bf Mon Sep 17 00:00:00 2001 From: Logan Ramos Date: Tue, 15 Mar 2022 09:55:57 -0400 Subject: [PATCH] Fix #145111 --- extensions/git/src/repository.ts | 2 +- src/vs/workbench/api/browser/mainThreadEditorTabs.ts | 4 ++-- src/vs/workbench/api/common/extHost.protocol.ts | 2 +- src/vs/workbench/api/common/extHostEditorTabs.ts | 8 +++----- src/vscode-dts/vscode.proposed.tabs.d.ts | 3 +-- 5 files changed, 8 insertions(+), 11 deletions(-) diff --git a/extensions/git/src/repository.ts b/extensions/git/src/repository.ts index a276eaca322..5e2cefcdf32 100644 --- a/extensions/git/src/repository.ts +++ b/extensions/git/src/repository.ts @@ -1287,7 +1287,7 @@ export class Repository implements Disposable { t.additionalResourcesAndViewTypes.find(r => r.resource!.scheme === 'git'))); // Close editors - diffEditorTabsToClose.forEach(t => t.close()); + diffEditorTabsToClose.forEach(t => t.close(false)); } async branch(name: string, _checkout: boolean, _ref?: string): Promise { diff --git a/src/vs/workbench/api/browser/mainThreadEditorTabs.ts b/src/vs/workbench/api/browser/mainThreadEditorTabs.ts index 3b4fef9a358..bdc493c9a5b 100644 --- a/src/vs/workbench/api/browser/mainThreadEditorTabs.ts +++ b/src/vs/workbench/api/browser/mainThreadEditorTabs.ts @@ -349,7 +349,7 @@ export class MainThreadEditorTabs { return; } - async $closeTab(tab: IEditorTabDto): Promise { + async $closeTab(tab: IEditorTabDto, preserveFocus: boolean): Promise { const group = this._editorGroupsService.getGroup(columnToEditorGroup(this._editorGroupsService, tab.viewColumn)); if (!group) { return; @@ -359,7 +359,7 @@ export class MainThreadEditorTabs { if (!editor) { return; } - await group.closeEditor(editor); + await group.closeEditor(editor, { preserveFocus }); } //#endregion } diff --git a/src/vs/workbench/api/common/extHost.protocol.ts b/src/vs/workbench/api/common/extHost.protocol.ts index d4419a85614..c7425f43530 100644 --- a/src/vs/workbench/api/common/extHost.protocol.ts +++ b/src/vs/workbench/api/common/extHost.protocol.ts @@ -612,7 +612,7 @@ export interface ExtHostEditorInsetsShape { export interface MainThreadEditorTabsShape extends IDisposable { // manage tabs: move, close, rearrange etc $moveTab(tab: IEditorTabDto, index: number, viewColumn: EditorGroupColumn): void; - $closeTab(tab: IEditorTabDto): Promise; + $closeTab(tab: IEditorTabDto, preserveFocus: boolean): Promise; } export interface IEditorTabGroupDto { diff --git a/src/vs/workbench/api/common/extHostEditorTabs.ts b/src/vs/workbench/api/common/extHostEditorTabs.ts index e3b5fb3d5e9..9fb18d8b86e 100644 --- a/src/vs/workbench/api/common/extHostEditorTabs.ts +++ b/src/vs/workbench/api/common/extHostEditorTabs.ts @@ -22,7 +22,7 @@ export interface IEditorTab { isDirty: boolean; additionalResourcesAndViewTypes: { resource: vscode.Uri | undefined; viewType: string | undefined }[]; move(index: number, viewColumn: ViewColumn): Promise; - close(): Promise; + close(preserveFocus: boolean): Promise; } export interface IEditorTabGroup { @@ -122,13 +122,11 @@ export class ExtHostEditorTabs implements IExtHostEditorTabs { move: async (index: number, viewColumn: ViewColumn) => { this._proxy.$moveTab(tabDto, index, typeConverters.ViewColumn.from(viewColumn)); // TODO: Need an on did change tab event at the group level - // await raceTimeout(Event.toPromise(this._onDidChangeTabs.event), 1000); return; }, - close: async () => { - await this._proxy.$closeTab(tabDto); + close: async (preserveFocus) => { + await this._proxy.$closeTab(tabDto, preserveFocus); // TODO: Need an on did change tab event at the group level - // await raceTimeout(Event.toPromise(this._onDidChangeTabs.event), 1000); return; } }); diff --git a/src/vscode-dts/vscode.proposed.tabs.d.ts b/src/vscode-dts/vscode.proposed.tabs.d.ts index b8f8893b4b3..c077e124548 100644 --- a/src/vscode-dts/vscode.proposed.tabs.d.ts +++ b/src/vscode-dts/vscode.proposed.tabs.d.ts @@ -87,8 +87,7 @@ declare module 'vscode' { * should no longer be used for further actions. */ // TODO@API move into TabGroups, support one or many tabs or tab groups - // TODO@API add `preserveFocus` - close(): Thenable; + close(preserveFocus: boolean): Thenable; } export namespace window {