diff --git a/src/plugins/coreplugin/editormanager/editormanager.cpp b/src/plugins/coreplugin/editormanager/editormanager.cpp index e4bbb6bd1e701c20eac0586209fe83c4e12f42b0..483c0e6525da35351a141fcddaf6fb75a02c5dd8 100644 --- a/src/plugins/coreplugin/editormanager/editormanager.cpp +++ b/src/plugins/coreplugin/editormanager/editormanager.cpp @@ -583,8 +583,12 @@ IEditor *EditorManagerPrivate::openEditor(EditorView *view, const QString &fileN } EditorManager::EditorFactoryList factories = EditorManagerPrivate::findFactories(Id(), fn); - if (editorId.isValid()) - std::stable_partition(factories.begin(), factories.end(), Utils::equal(&IEditorFactory::id, editorId)); + if (editorId.isValid()) { + if (IEditorFactory *factory = findById<IEditorFactory>(editorId)) { + factories.removeOne(factory); + factories.push_front(factory); + } + } IEditor *editor = 0; auto overrideCursor = Utils::OverrideCursor(QCursor(Qt::WaitCursor));