diff --git a/src/vs/workbench/browser/parts/editor/editorCommands.ts b/src/vs/workbench/browser/parts/editor/editorCommands.ts index 3362b223c5622..8b966c40e89ff 100644 --- a/src/vs/workbench/browser/parts/editor/editorCommands.ts +++ b/src/vs/workbench/browser/parts/editor/editorCommands.ts @@ -632,12 +632,13 @@ export function splitEditor(editorGroupService: IEditorGroupsService, direction: editorToCopy = withNullAsUndefined(sourceGroup.activeEditor); } + // Copy the editor to the new group, else move the editor to the new group if (editorToCopy && (editorToCopy as EditorInput).supportsSplitEditor()) { sourceGroup.copyEditor(editorToCopy, newGroup); + // Focus + newGroup.focus(); } - // Focus - newGroup.focus(); } function registerSplitEditorCommands() { diff --git a/src/vs/workbench/contrib/customEditor/browser/customEditorInput.ts b/src/vs/workbench/contrib/customEditor/browser/customEditorInput.ts index 32ebe180bdd49..9255be1615776 100644 --- a/src/vs/workbench/contrib/customEditor/browser/customEditorInput.ts +++ b/src/vs/workbench/contrib/customEditor/browser/customEditorInput.ts @@ -90,7 +90,7 @@ export class CustomEditorInput extends LazilyResolvedWebviewEditorInput { } public supportsSplitEditor() { - return true; + return !!this.customEditorService.getCustomEditorCapabilities(this.viewType)?.supportsMultipleEditorsPerDocument; } getName(): string { diff --git a/src/vs/workbench/contrib/customEditor/browser/customEditors.ts b/src/vs/workbench/contrib/customEditor/browser/customEditors.ts index 03388999dfcde..323de4b2f5ce3 100644 --- a/src/vs/workbench/contrib/customEditor/browser/customEditors.ts +++ b/src/vs/workbench/contrib/customEditor/browser/customEditors.ts @@ -199,7 +199,7 @@ export class CustomEditorService extends Disposable implements ICustomEditorServ }); } - private getCustomEditorCapabilities(viewType: string): CustomEditorCapabilities | undefined { + public getCustomEditorCapabilities(viewType: string): CustomEditorCapabilities | undefined { return this._editorCapabilities.get(viewType); } diff --git a/src/vs/workbench/contrib/customEditor/common/customEditor.ts b/src/vs/workbench/contrib/customEditor/common/customEditor.ts index 06fd5954c37d7..1e9ec786ee1f0 100644 --- a/src/vs/workbench/contrib/customEditor/common/customEditor.ts +++ b/src/vs/workbench/contrib/customEditor/common/customEditor.ts @@ -44,6 +44,7 @@ export interface ICustomEditorService { openWith(resource: URI, customEditorViewType: string, options?: ITextEditorOptions, group?: IEditorGroup): Promise; registerCustomEditorCapabilities(viewType: string, options: CustomEditorCapabilities): IDisposable; + getCustomEditorCapabilities(viewType: string): CustomEditorCapabilities | undefined } export interface ICustomEditorModelManager {