提交 ced4eabc 编写于 作者: B Benjamin Pasero

move: do not prompt for dirty

上级 f411b06c
...@@ -496,6 +496,17 @@ export class EditorPart extends Part implements IEditorPart { ...@@ -496,6 +496,17 @@ export class EditorPart extends Part implements IEditorPart {
return TPromise.as<void>(null); return TPromise.as<void>(null);
} }
// Check for dirty and veto
return this.handleDirty([input]).then(veto => {
if (veto) {
return;
}
return this.doCloseEditor(position, input);
});
}
private doCloseEditor(position: Position, input: EditorInput): TPromise<void> {
const group = this.groupAt(position); const group = this.groupAt(position);
// Closing the active editor of the group is a bit more work // Closing the active editor of the group is a bit more work
...@@ -504,60 +515,43 @@ export class EditorPart extends Part implements IEditorPart { ...@@ -504,60 +515,43 @@ export class EditorPart extends Part implements IEditorPart {
} }
// Closing inactive editor is just a model update // Closing inactive editor is just a model update
this.doCloseInactiveEditor(input, position); return this.doCloseInactiveEditor(input, position);
} }
private doCloseActiveEditor(position: Position): TPromise<void> { private doCloseActiveEditor(position: Position): TPromise<void> {
// Check for dirty and veto // Update visible inputs for position
const input = this.visibleInputs[position]; this.visibleInputs[position] = null;
return this.handleDirty([input]).then(veto => {
if (veto) {
return;
}
// Update visible inputs for position
this.visibleInputs[position] = null;
// Dispose previous input listener if any
if (this.visibleInputListeners[position]) {
this.visibleInputListeners[position]();
this.visibleInputListeners[position] = null;
}
// Reset counter // Dispose previous input listener if any
this.editorSetInputErrorCounter[position] = 0; if (this.visibleInputListeners[position]) {
this.visibleInputListeners[position]();
this.visibleInputListeners[position] = null;
}
// Update stacks model // Reset counter
const group = this.groupAt(position); this.editorSetInputErrorCounter[position] = 0;
group.closeEditor(group.activeEditor);
// Close group is this is the last editor in group // Update stacks model
if (group.count === 0) { const group = this.groupAt(position);
return this.doCloseGroup(position); group.closeEditor(group.activeEditor);
}
// Otherwise open next active // Close group is this is the last editor in group
return this.openEditor(group.activeEditor, null, position).then(null, (error) => { if (group.count === 0) {
return this.doCloseGroup(position);
}
// in case of an error, continue closing // Otherwise open next active
return this.doCloseActiveEditor(position); return this.openEditor(group.activeEditor, null, position).then(() => null);
});
});
} }
private doCloseInactiveEditor(input: EditorInput, position: Position): TPromise<void> { private doCloseInactiveEditor(input: EditorInput, position: Position): TPromise<void> {
// Check for dirty and veto // Closing inactive editor is just a model update
return this.handleDirty([input]).then(veto => { const group = this.groupAt(position);
if (veto) { group.closeEditor(input);
return;
}
// Closing inactive editor is just a model update return TPromise.as<void>(null);
const group = this.groupAt(position);
group.closeEditor(input);
});
} }
private doCloseGroup(position: Position): TPromise<void> { private doCloseGroup(position: Position): TPromise<void> {
...@@ -782,7 +776,7 @@ export class EditorPart extends Part implements IEditorPart { ...@@ -782,7 +776,7 @@ export class EditorPart extends Part implements IEditorPart {
return TPromise.as<BaseEditor>(null); return TPromise.as<BaseEditor>(null);
} }
return this.closeEditor(from, input).then(() => { return this.doCloseEditor(from, input).then(() => {
return this.openEditor(input, EditorOptions.create({ pinned: true, index }), this.stacksModel.positionOfGroup(toGroup)); return this.openEditor(input, EditorOptions.create({ pinned: true, index }), this.stacksModel.positionOfGroup(toGroup));
}); });
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册