From cc8ae1187cedf233494ea7f19a748378d81a94c7 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Wed, 11 May 2016 11:43:15 +0200 Subject: [PATCH] first cut closing editors and groups --- .../browser/parts/editor/editorPart.ts | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/vs/workbench/browser/parts/editor/editorPart.ts b/src/vs/workbench/browser/parts/editor/editorPart.ts index 9d26ce481a5..a7c726f2ae4 100644 --- a/src/vs/workbench/browser/parts/editor/editorPart.ts +++ b/src/vs/workbench/browser/parts/editor/editorPart.ts @@ -499,12 +499,34 @@ export class EditorPart extends Part implements IEditorPart { // Reset counter this.editorSetInputErrorCounter[position] = 0; + // Update model + const group = this.stacksModel.groups[position]; + group.closeEditor(group.activeEditor); // TODO@stacks allow to close any non active editor + + // Close group is this is the last editor in group + if (group.count === 0) { + return this.doCloseGroup(group, editor, position); + } + + // Otherwise open next active + return this.openEditor(group.activeEditor, null, editor.position).then(null, (error) => { + + // in case of an error, continue closing + this.doCloseEditor(editor, position); + }); + } + + private doCloseGroup(group: EditorGroup, editor: BaseEditor, position: Position): TPromise { + // Emit Input-Changing Event this.emit(WorkbenchEventType.EDITOR_INPUT_CHANGING, new EditorEvent(null, null, null, null, position)); // Hide Editor return this.doHideEditor(editor, position, true).then(() => { + // Update model + this.stacksModel.closeGroup(group); + // Emit Input-Changed Event this.emit(WorkbenchEventType.EDITOR_INPUT_CHANGED, new EditorEvent(null, null, null, null, position)); -- GitLab