Skip to content

Commit 9eec0fe

Browse files
authored
New auto split sizing does something weird (fix microsoft#186559) (microsoft#186609)
1 parent 7358270 commit 9eec0fe

File tree

1 file changed

+25
-13
lines changed

1 file changed

+25
-13
lines changed

src/vs/workbench/browser/parts/editor/editorDropTarget.ts

Lines changed: 25 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -310,25 +310,37 @@ class DropOverlay extends Themable {
310310
const data = this.editorTransfer.getData(DraggedEditorIdentifier.prototype);
311311
if (Array.isArray(data)) {
312312
const draggedEditor = data[0].identifier;
313-
const targetGroup = ensureTargetGroup();
314313

315314
const sourceGroup = this.accessor.getGroup(draggedEditor.groupId);
316315
if (sourceGroup) {
317-
if (sourceGroup === targetGroup) {
318-
return;
316+
const copyEditor = this.isCopyOperation(event, draggedEditor);
317+
let targetGroup: IEditorGroupView | undefined = undefined;
318+
319+
// Optimization: if we move the last editor of an editor group
320+
// and we are configured to close empty editor groups, we can
321+
// rather move the entire editor group according to the direction
322+
if (this.editorGroupService.partOptions.closeEmptyGroups && sourceGroup.count === 1 && typeof splitDirection === 'number' && !copyEditor) {
323+
targetGroup = this.accessor.moveGroup(sourceGroup, this.groupView, splitDirection);
319324
}
320325

321-
// Open in target group
322-
const options = fillActiveEditorViewState(sourceGroup, draggedEditor.editor, {
323-
pinned: true, // always pin dropped editor
324-
sticky: sourceGroup.isSticky(draggedEditor.editor), // preserve sticky state
325-
});
326+
// In any other case do a normal move/copy operation
327+
else {
328+
targetGroup = ensureTargetGroup();
329+
if (sourceGroup === targetGroup) {
330+
return;
331+
}
326332

327-
const copyEditor = this.isCopyOperation(event, draggedEditor);
328-
if (!copyEditor) {
329-
sourceGroup.moveEditor(draggedEditor.editor, targetGroup, options);
330-
} else {
331-
sourceGroup.copyEditor(draggedEditor.editor, targetGroup, options);
333+
// Open in target group
334+
const options = fillActiveEditorViewState(sourceGroup, draggedEditor.editor, {
335+
pinned: true, // always pin dropped editor
336+
sticky: sourceGroup.isSticky(draggedEditor.editor), // preserve sticky state
337+
});
338+
339+
if (!copyEditor) {
340+
sourceGroup.moveEditor(draggedEditor.editor, targetGroup, options);
341+
} else {
342+
sourceGroup.copyEditor(draggedEditor.editor, targetGroup, options);
343+
}
332344
}
333345

334346
// Ensure target has focus

0 commit comments

Comments
 (0)