diff --git a/src/plugins/qt4projectmanager/qtversionmanager.cpp b/src/plugins/qt4projectmanager/qtversionmanager.cpp
index 0e98f3835734440d16010eaa42b087875650e10a..64310b1b82c42ba0c1eb7a20d65efc1fe920add9 100644
--- a/src/plugins/qt4projectmanager/qtversionmanager.cpp
+++ b/src/plugins/qt4projectmanager/qtversionmanager.cpp
@@ -62,6 +62,7 @@ using ProjectExplorer::DebuggingHelperLibrary;
 static const char *QtVersionsSectionName = "QtVersions";
 static const char *defaultQtVersionKey = "DefaultQtVersion";
 static const char *newQtVersionsKey = "NewQtVersions";
+static const char *PATH_AUTODETECTION_SOURCE = "PATH";
 
 QtVersionManager *QtVersionManager::m_self = 0;
 
@@ -86,14 +87,20 @@ QtVersionManager::QtVersionManager()
         else if (id > m_idcount)
             m_idcount = id;
         bool isAutodetected;
-        if (s->contains("isAutodetected"))
+        QString autodetectionSource;
+        if (s->contains("isAutodetected")) {
             isAutodetected = s->value("isAutodetected", false).toBool();
-        else // compatibility
+            autodetectionSource = s->value("autodetectionSource", QString()).toString();
+        } else {// compatibility
             isAutodetected = s->value("IsSystemVersion", false).toBool();
+            if (isAutodetected)
+                autodetectionSource = QLatin1String(PATH_AUTODETECTION_SOURCE);
+        }
         QtVersion *version = new QtVersion(s->value("Name").toString(),
                                            s->value("Path").toString(),
                                            id,
-                                           isAutodetected);
+                                           isAutodetected,
+                                           autodetectionSource);
         version->setMingwDirectory(s->value("MingwDirectory").toString());
         version->setMsvcVersion(s->value("msvcVersion").toString());
         m_versions.append(version);
@@ -192,13 +199,16 @@ void QtVersionManager::writeVersionsIntoSettings()
     s->setValue(defaultQtVersionKey, m_defaultVersion);
     s->beginWriteArray(QtVersionsSectionName);
     for (int i = 0; i < m_versions.size(); ++i) {
+        const QtVersion *version = m_versions.at(i);
         s->setArrayIndex(i);
-        s->setValue("Name", m_versions.at(i)->name());
-        s->setValue("Path", m_versions.at(i)->path());
-        s->setValue("Id", m_versions.at(i)->uniqueId());
-        s->setValue("MingwDirectory", m_versions.at(i)->mingwDirectory());
-        s->setValue("msvcVersion", m_versions.at(i)->msvcVersion());
-        s->setValue("isAutodetected", m_versions.at(i)->isAutodetected());
+        s->setValue("Name", version->name());
+        s->setValue("Path", version->path());
+        s->setValue("Id", version->uniqueId());
+        s->setValue("MingwDirectory", version->mingwDirectory());
+        s->setValue("msvcVersion", version->msvcVersion());
+        s->setValue("isAutodetected", version->isAutodetected());
+        if (version->isAutodetected())
+            s->setValue("autodetectionSource", version->autodetectionSource());
     }
     s->endArray();
 }
@@ -288,7 +298,8 @@ void QtVersionManager::updateSystemVersion()
     }
 
     foreach (QtVersion *version, m_versions) {
-        if (version->isAutodetected()) { //TODO this needs to additionally check for the autodetectionsource
+        if (version->isAutodetected()
+            && version->autodetectionSource() == PATH_AUTODETECTION_SOURCE) {
             version->setPath(systemQtPath);
             version->setName(tr("Qt in PATH"));
             haveSystemVersion = true;
@@ -299,7 +310,8 @@ void QtVersionManager::updateSystemVersion()
     QtVersion *version = new QtVersion(tr("Qt in PATH"),
                                        systemQtPath,
                                        getUniqueId(),
-                                       true);
+                                       true,
+                                       PATH_AUTODETECTION_SOURCE);
     m_versions.prepend(version);
     updateUniqueIdToIndexMap();
     if (m_versions.size() > 1) // we had other versions before adding system version
@@ -354,9 +366,11 @@ void QtVersionManager::setNewQtVersions(QList<QtVersion *> newVersions, int newD
 /// QtVersion
 ///
 
-QtVersion::QtVersion(const QString &name, const QString &path, int id, bool isAutodetected)
+QtVersion::QtVersion(const QString &name, const QString &path, int id,
+                     bool isAutodetected, const QString &autodetectionSource)
     : m_name(name),
     m_isAutodetected(isAutodetected),
+    m_autodetectionSource(autodetectionSource),
     m_hasDebuggingHelper(false),
     m_notInstalled(false),
     m_defaultConfigIsDebug(true),
diff --git a/src/plugins/qt4projectmanager/qtversionmanager.h b/src/plugins/qt4projectmanager/qtversionmanager.h
index b6fb3d377ac99fd1b7c75a1bc5c05360aa109763..debaf9b4eb5651ba80c62df175c480f3b2b51fc0 100644
--- a/src/plugins/qt4projectmanager/qtversionmanager.h
+++ b/src/plugins/qt4projectmanager/qtversionmanager.h
@@ -50,7 +50,8 @@ class QtVersion
     friend class QtVersionManager;
 public:
     QtVersion(const QString &name, const QString &path);
-    QtVersion(const QString &name, const QString &path, int id, bool isAutodetected = false);
+    QtVersion(const QString &name, const QString &path, int id,
+              bool isAutodetected = false, const QString &autodetectionSource = QString());
     QtVersion()
         :m_name(QString::null), m_id(-1), m_toolChain(0)
     { setPath(QString::null); }
@@ -59,6 +60,7 @@ public:
     bool isValid() const; //TOOD check that the dir exists and the name is non empty
     bool isInstalled() const;
     bool isAutodetected() const { return m_isAutodetected; }
+    QString autodetectionSource() const { return m_autodetectionSource; }
 
     QString name() const;
     QString path() const;
@@ -130,6 +132,7 @@ private:
     QString m_msvcVersion;
     int m_id;
     bool m_isAutodetected;
+    QString m_autodetectionSource;
     bool m_hasDebuggingHelper;
 
     mutable bool m_mkspecUpToDate;