diff --git a/src/plugins/coreplugin/editormanager/editormanager.cpp b/src/plugins/coreplugin/editormanager/editormanager.cpp index d53b3b5be140765562bfa014b6827ceb9223fd39..5d9cb25c06f04324af9c62dc563e114122d52f37 100644 --- a/src/plugins/coreplugin/editormanager/editormanager.cpp +++ b/src/plugins/coreplugin/editormanager/editormanager.cpp @@ -939,7 +939,8 @@ void EditorManager::activateEditorForIndex(Internal::EditorView *view, const QMo QString fileName = index.data(Qt::UserRole + 1).toString(); QString id = index.data(Qt::UserRole + 2).toString(); - openEditor(view, fileName, id, flags); + if (!openEditor(view, fileName, id, flags)) + m_d->m_editorModel->removeEditor(index); } Core::IEditor *EditorManager::placeEditor(Core::Internal::EditorView *view, Core::IEditor *editor) diff --git a/src/plugins/coreplugin/editormanager/openeditorsmodel.cpp b/src/plugins/coreplugin/editormanager/openeditorsmodel.cpp index d205e3d8b3bea55886bc305139cdcded42c61546..84f88a424e0bb533eeded7ce914bbfd7c8472613 100644 --- a/src/plugins/coreplugin/editormanager/openeditorsmodel.cpp +++ b/src/plugins/coreplugin/editormanager/openeditorsmodel.cpp @@ -204,6 +204,11 @@ void OpenEditorsModel::removeEditor(const QModelIndex &index) removeEditor(index.row()); } +void OpenEditorsModel::removeEditor(const QString &fileName) +{ + removeEditor(findFileName(fileName)); +} + void OpenEditorsModel::removeEditor(int idx) { if (idx < 0) diff --git a/src/plugins/coreplugin/editormanager/openeditorsmodel.h b/src/plugins/coreplugin/editormanager/openeditorsmodel.h index ab9b14b5ea140b254fad1e2ffe1edf9333378066..39ee81fb751fde2ee9c943d76772071a7b5b04cc 100644 --- a/src/plugins/coreplugin/editormanager/openeditorsmodel.h +++ b/src/plugins/coreplugin/editormanager/openeditorsmodel.h @@ -82,6 +82,7 @@ public: void removeEditor(IEditor *editor); void removeEditor(const QModelIndex &index); + void removeEditor(const QString &fileName); void removeAllRestoredEditors(); void emitDataChanged(IEditor *editor); diff --git a/src/plugins/coreplugin/editormanager/openeditorswindow.cpp b/src/plugins/coreplugin/editormanager/openeditorswindow.cpp index 98a6d3172a703cab0c96519bb6bae59c040c512a..8a24d72022569175715b87522994dbe142b2aa58 100644 --- a/src/plugins/coreplugin/editormanager/openeditorswindow.cpp +++ b/src/plugins/coreplugin/editormanager/openeditorswindow.cpp @@ -282,8 +282,12 @@ void OpenEditorsWindow::selectEditor(QTreeWidgetItem *item) EditorView *view = item->data(0, Qt::UserRole+1).value<EditorView*>(); EditorManager::instance()->activateEditorForFile(view, file, Core::EditorManager::ModeSwitch); } else { - EditorManager::instance()->openEditor(item->toolTip(0), item->data(0, Qt::UserRole+2).toByteArray(), - Core::EditorManager::ModeSwitch); + if (!EditorManager::instance()->openEditor( + item->toolTip(0), item->data(0, Qt::UserRole+2).toByteArray(), + Core::EditorManager::ModeSwitch)) { + EditorManager::instance()->openedEditorsModel()->removeEditor(item->toolTip(0)); + delete item; + } } }