From 2e650d0fa1e3b402aeb9dcc1757afc12d58f6059 Mon Sep 17 00:00:00 2001
From: Christian Kamm <christian.d.kamm@nokia.com>
Date: Tue, 26 Oct 2010 16:29:46 +0200
Subject: [PATCH] qmldump: Ensure path and environment are taken from the same
 Qt version.

Fixes f1fb0bddb11d69355784953a6cc0364f9fa25d3e.

Reviewed-by: Kai Koehne
(cherry picked from commit 528999d54972306238e1623cfbc4887ca635c253)
---
 src/plugins/qmlprojectmanager/qmlproject.cpp  | 11 +----------
 src/plugins/qt4projectmanager/qmldumptool.cpp |  9 ++++++---
 src/plugins/qt4projectmanager/qmldumptool.h   |  2 +-
 src/plugins/qt4projectmanager/qt4project.cpp  |  3 +--
 4 files changed, 9 insertions(+), 16 deletions(-)

diff --git a/src/plugins/qmlprojectmanager/qmlproject.cpp b/src/plugins/qmlprojectmanager/qmlproject.cpp
index d928291a7da..5c7c7e83dc7 100644
--- a/src/plugins/qmlprojectmanager/qmlproject.cpp
+++ b/src/plugins/qmlprojectmanager/qmlproject.cpp
@@ -131,16 +131,7 @@ void QmlProject::refresh(RefreshOptions options)
     QmlJS::ModelManagerInterface::ProjectInfo pinfo(this);
     pinfo.sourceFiles = files();
     pinfo.importPaths = importPaths();
-    pinfo.qmlDumpPath = Qt4ProjectManager::QmlDumpTool::qmlDumpPath(this);
-
-    if (activeTarget()) {
-        if (const QmlProjectRunConfiguration *runConfig =
-                qobject_cast<QmlProjectRunConfiguration*>(activeTarget()->activeRunConfiguration())) {
-            if (runConfig->qtVersion()) {
-                pinfo.qmlDumpEnvironment = runConfig->qtVersion()->qmlToolsEnvironment();
-            }
-        }
-    }
+    Qt4ProjectManager::QmlDumpTool::pathAndEnvironment(this, &pinfo.qmlDumpPath, &pinfo.qmlDumpEnvironment);
     m_modelManager->updateProjectInfo(pinfo);
 }
 
diff --git a/src/plugins/qt4projectmanager/qmldumptool.cpp b/src/plugins/qt4projectmanager/qmldumptool.cpp
index 13e6486c410..64deddcf256 100644
--- a/src/plugins/qt4projectmanager/qmldumptool.cpp
+++ b/src/plugins/qt4projectmanager/qmldumptool.cpp
@@ -272,7 +272,7 @@ QStringList QmlDumpTool::installDirectories(const QString &qtInstallData)
     return directories;
 }
 
-QString QmlDumpTool::qmlDumpPath(ProjectExplorer::Project *project)
+void QmlDumpTool::pathAndEnvironment(ProjectExplorer::Project *project, QString *dumperPath, Utils::Environment *env)
 {
     QString path;
 
@@ -292,7 +292,7 @@ QString QmlDumpTool::qmlDumpPath(ProjectExplorer::Project *project)
             Core::ICore::instance()->progressManager()->addTask(task, taskName,
                                                                 QLatin1String("Qt4ProjectManager::BuildHelpers"));
         }
-        return path;
+        return;
     }
 
     if (!path.isEmpty()) {
@@ -306,7 +306,10 @@ QString QmlDumpTool::qmlDumpPath(ProjectExplorer::Project *project)
         }
     }
 
-    return path;
+    if (!path.isEmpty() && version && dumperPath && env) {
+        *dumperPath = path;
+        *env = version->qmlToolsEnvironment();
+    }
 }
 
 } // namespace Qt4ProjectManager
diff --git a/src/plugins/qt4projectmanager/qmldumptool.h b/src/plugins/qt4projectmanager/qmldumptool.h
index 13fbe483d35..2716f25c7e2 100644
--- a/src/plugins/qt4projectmanager/qmldumptool.h
+++ b/src/plugins/qt4projectmanager/qmldumptool.h
@@ -61,7 +61,7 @@ public:
     // Copy the source files to a target location and return the chosen target location.
     static QString copy(const QString &qtInstallData, QString *errorMessage);
 
-    static QString qmlDumpPath(ProjectExplorer::Project *project);
+    static void pathAndEnvironment(ProjectExplorer::Project *project, QString *path, Utils::Environment *env);
 
 private:
     static QStringList installDirectories(const QString &qtInstallData);
diff --git a/src/plugins/qt4projectmanager/qt4project.cpp b/src/plugins/qt4projectmanager/qt4project.cpp
index a233fb639fc..5fbbc83c40e 100644
--- a/src/plugins/qt4projectmanager/qt4project.cpp
+++ b/src/plugins/qt4projectmanager/qt4project.cpp
@@ -597,10 +597,9 @@ void Qt4Project::updateQmlJSCodeModel()
             const QString qtVersionImportPath = qtVersion->versionInfo().value("QT_INSTALL_IMPORTS");
             if (!qtVersionImportPath.isEmpty())
                 projectInfo.importPaths += qtVersionImportPath;
-            projectInfo.qmlDumpEnvironment = qtVersion->qmlToolsEnvironment();
-            projectInfo.qmlDumpPath = QmlDumpTool::qmlDumpPath(this);
         }
     }
+    QmlDumpTool::pathAndEnvironment(this, &projectInfo.qmlDumpPath, &projectInfo.qmlDumpEnvironment);
     projectInfo.importPaths.removeDuplicates();
 
     modelManager->updateProjectInfo(projectInfo);
-- 
GitLab