diff --git a/src/vs/workbench/api/electron-browser/mainThreadComments.ts b/src/vs/workbench/api/electron-browser/mainThreadComments.ts index 0b499e49b40..b3187147fd6 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadComments.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadComments.ts @@ -45,13 +45,17 @@ export class MainThreadComments extends Disposable implements MainThreadComments const _visibleEditors = {}; visibleEditors.forEach(editor => { + if (!editor.hasModel()) { + return; // we need a model + } const id = editor.getId(); + const model = editor.getModel(); if (editors.filter(ed => ed.getId() === id).length > 0) { // it's an active editor, we are going to update this editor's comments anyways } else { if (this._visibleModels[id]) { // it's the same active editor, but we may want to check if the model is still the same - let modelId = editor.getModel().getModeId(); + let modelId = model.getModeId(); if (modelId !== this._visibleModels[id]) { editors.push(editor); } @@ -61,7 +65,7 @@ export class MainThreadComments extends Disposable implements MainThreadComments } } - _visibleEditors[id] = editor.getModel().getModeId(); + _visibleEditors[id] = model.getModeId(); }); this._visibleModels = _visibleEditors; diff --git a/src/vs/workbench/browser/parts/editor/sideBySideEditor.ts b/src/vs/workbench/browser/parts/editor/sideBySideEditor.ts index f994d7f9129..73ecd83ce11 100644 --- a/src/vs/workbench/browser/parts/editor/sideBySideEditor.ts +++ b/src/vs/workbench/browser/parts/editor/sideBySideEditor.ts @@ -109,9 +109,11 @@ export class SideBySideEditor extends BaseEditor { if (this.masterEditor) { this.masterEditor.setVisible(visible, group); } + if (this.detailsEditor) { this.detailsEditor.setVisible(visible, group); } + super.setEditorVisible(visible, group); } @@ -119,10 +121,13 @@ export class SideBySideEditor extends BaseEditor { if (this.masterEditor) { this.masterEditor.clearInput(); } + if (this.detailsEditor) { this.detailsEditor.clearInput(); } + this.disposeEditors(); + super.clearInput(); } @@ -141,6 +146,7 @@ export class SideBySideEditor extends BaseEditor { if (this.masterEditor) { return this.masterEditor.getControl(); } + return null; } @@ -161,7 +167,10 @@ export class SideBySideEditor extends BaseEditor { return this.setNewInput(newInput, options, token); } - return Promise.all([this.detailsEditor.setInput(newInput.details, null, token), this.masterEditor.setInput(newInput.master, options, token)]).then(() => void 0); + return Promise.all([ + this.detailsEditor.setInput(newInput.details, null, token), + this.masterEditor.setInput(newInput.master, options, token)] + ).then(() => void 0); } private setNewInput(newInput: SideBySideEditorInput, options: EditorOptions, token: CancellationToken): Thenable { diff --git a/src/vs/workbench/parts/files/browser/editors/textFileEditor.ts b/src/vs/workbench/parts/files/browser/editors/textFileEditor.ts index d8058677882..69c4078ff86 100644 --- a/src/vs/workbench/parts/files/browser/editors/textFileEditor.ts +++ b/src/vs/workbench/parts/files/browser/editors/textFileEditor.ts @@ -130,20 +130,8 @@ export class TextFileEditor extends BaseTextEditor { return this.openAsBinary(input, options); } - // Check Model state const textFileModel = resolvedModel; - const hasInput = !!this.input; - const modelDisposed = textFileModel.isDisposed(); - const inputChanged = hasInput && this.input.getResource().toString() !== textFileModel.getResource().toString(); - if ( - !hasInput || // editor got hidden meanwhile - modelDisposed || // input got disposed meanwhile - inputChanged // a different input was set meanwhile - ) { - return void 0; - } - // Editor const textEditor = this.getControl(); textEditor.setModel(textFileModel.textEditorModel);