diff --git a/src/vs/workbench/browser/parts/editor/editorActions.ts b/src/vs/workbench/browser/parts/editor/editorActions.ts index cffa6892a99b8f171fcc08335a798ca67c0d8efe..5b97aceda66eef668225b9b060b009cc79662e2c 100644 --- a/src/vs/workbench/browser/parts/editor/editorActions.ts +++ b/src/vs/workbench/browser/parts/editor/editorActions.ts @@ -161,9 +161,14 @@ export class JoinTwoGroupsAction extends Action { sourceGroup = this.editorGroupService.activeGroup; } - const targetGroup = this.editorGroupService.findGroup({ direction: GroupDirection.RIGHT }, sourceGroup) || this.editorGroupService.findGroup({ direction: GroupDirection.DOWN }, sourceGroup); - if (targetGroup && sourceGroup !== targetGroup) { - this.editorGroupService.mergeGroup(sourceGroup, targetGroup); + const targetGroupDirections = [GroupDirection.RIGHT, GroupDirection.DOWN, GroupDirection.LEFT, GroupDirection.UP]; + for (let i = 0; i < targetGroupDirections.length; i++) { + const targetGroup = this.editorGroupService.findGroup({ direction: targetGroupDirections[i] }, sourceGroup); + if (targetGroup && sourceGroup !== targetGroup) { + this.editorGroupService.mergeGroup(sourceGroup, targetGroup); + + return TPromise.as(true); + } } return TPromise.as(true); @@ -663,7 +668,7 @@ export class CloseEditorsInOtherGroupsAction extends Action { public run(context?: IEditorIdentifier): TPromise { const groupToSkip = context ? this.editorGroupService.getGroup(context.groupId) : this.editorGroupService.activeGroup; - return TPromise.join(this.editorGroupService.groups.map(g => { + return TPromise.join(this.editorGroupService.getGroups(GroupsOrder.MOST_RECENTLY_ACTIVE).map(g => { if (g.id === groupToSkip.id) { return TPromise.as(null); } diff --git a/src/vs/workbench/browser/parts/editor/editorCommands.ts b/src/vs/workbench/browser/parts/editor/editorCommands.ts index f002199999abb0bbc80117206e4dbfd625fd4556..ad822f8944138fc7010f9f35c4fb173737c3a88b 100644 --- a/src/vs/workbench/browser/parts/editor/editorCommands.ts +++ b/src/vs/workbench/browser/parts/editor/editorCommands.ts @@ -207,7 +207,7 @@ function registerEditorGroupsLayoutCommand(): void { export function mergeAllGroups(editorGroupService: IEditorGroupsService): void { const target = editorGroupService.activeGroup; - editorGroupService.groups.forEach(group => { + editorGroupService.getGroups(GroupsOrder.MOST_RECENTLY_ACTIVE).forEach(group => { if (group === target) { return; // keep target } diff --git a/src/vs/workbench/browser/parts/editor/editorPicker.ts b/src/vs/workbench/browser/parts/editor/editorPicker.ts index 13c879b8f6c46fc1a068b42c36272cf2548c45a6..a1b7a48374de82148688f2fc9b336b40dd0d055e 100644 --- a/src/vs/workbench/browser/parts/editor/editorPicker.ts +++ b/src/vs/workbench/browser/parts/editor/editorPicker.ts @@ -206,7 +206,7 @@ export class AllEditorsPicker extends BaseEditorPicker { protected getEditorEntries(): EditorPickerEntry[] { const entries: EditorPickerEntry[] = []; - this.editorGroupService.groups.forEach(group => { + this.editorGroupService.getGroups(GroupsOrder.CREATION_TIME).forEach(group => { group.editors.forEach(editor => { entries.push(this.instantiationService.createInstance(EditorPickerEntry, editor, group)); });