From 21500d384dbe007e84133096af2877c56a63f09b Mon Sep 17 00:00:00 2001
From: Daniel Teske <daniel.teske@digia.com>
Date: Thu, 17 Jul 2014 14:25:04 +0200
Subject: [PATCH] ProjectExplorerPlugin: Use one factory for all project
 managers

Change-Id: Ie2204cd82bf8e060136fd28098cce5affac2cbde
Reviewed-by: hjk <hjk121@nokiamail.com>
Reviewed-by: Eike Ziller <eike.ziller@digia.com>
---
 .../projectexplorer/projectexplorer.cpp       | 27 ++++++++++---------
 1 file changed, 15 insertions(+), 12 deletions(-)

diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp
index 693f59ae79d..ba34773a702 100644
--- a/src/plugins/projectexplorer/projectexplorer.cpp
+++ b/src/plugins/projectexplorer/projectexplorer.cpp
@@ -1220,26 +1220,29 @@ void ProjectExplorerPlugin::extensionsInitialized()
 
     const QString filterSeparator = QLatin1String(";;");
     QStringList filterStrings;
+
+    auto factory = new IDocumentFactory;
+    factory->setOpener([this](const QString &fileName) -> IDocument* {
+        QString errorMessage;
+        ProjectExplorerPlugin::instance()->openProject(fileName, &errorMessage);
+        if (!errorMessage.isEmpty())
+            QMessageBox::critical(Core::ICore::mainWindow(),
+                tr("Failed to open project"), errorMessage);
+        return 0;
+    });
+
     foreach (IProjectManager *manager, projectManagers) {
-        auto factory = new IDocumentFactory;
-        factory->addMimeType(manager->mimeType());
-        factory->setOpener([this](const QString &fileName) -> IDocument* {
-            QString errorMessage;
-            ProjectExplorerPlugin::instance()->openProject(fileName, &errorMessage);
-            if (!errorMessage.isEmpty())
-                QMessageBox::critical(Core::ICore::mainWindow(),
-                    tr("Failed to open project"), errorMessage);
-            return 0;
-        });
         const QString mimeType = manager->mimeType();
+        factory->addMimeType(mimeType);
         MimeType mime = MimeDatabase::findByType(mimeType);
         allGlobPatterns.append(mime.globPatterns());
         filterStrings.append(mime.filterString());
 
-        d->m_profileMimeTypes += factory->mimeTypes();
-        addAutoReleasedObject(factory);
+        d->m_profileMimeTypes += mimeType;
     }
 
+    addAutoReleasedObject(factory);
+
     filterStrings.prepend(MimeType::formatFilterString(
        tr("All Projects"), allGlobPatterns));
     d->m_projectFilterString = filterStrings.join(filterSeparator);
-- 
GitLab