diff --git a/src/plugins/cpptools/cppmodelmanager.cpp b/src/plugins/cpptools/cppmodelmanager.cpp
index e8359da2b5b988b254f5d69cdb393993588af1a2..a165614a59479107d72703b33a074a85b70b730c 100644
--- a/src/plugins/cpptools/cppmodelmanager.cpp
+++ b/src/plugins/cpptools/cppmodelmanager.cpp
@@ -115,7 +115,6 @@ public:
     void setWorkingCopy(const QMap<QString, QByteArray> &workingCopy);
     void setIncludePaths(const QStringList &includePaths);
     void setFrameworkPaths(const QStringList &frameworkPaths);
-    void addIncludePath(const QString &path);
     void setProjectFiles(const QStringList &files);
     void run(QString &fileName);
     void operator()(QString &fileName);
@@ -170,9 +169,6 @@ void CppPreprocessor::setIncludePaths(const QStringList &includePaths)
 void CppPreprocessor::setFrameworkPaths(const QStringList &frameworkPaths)
 { m_frameworkPaths = frameworkPaths; }
 
-void CppPreprocessor::addIncludePath(const QString &path)
-{ m_includePaths.append(path); }
-
 void CppPreprocessor::setProjectFiles(const QStringList &files)
 { m_projectFiles = files; }
 
@@ -488,14 +484,14 @@ void CppModelManager::ensureUpdated()
     if (! m_dirty)
         return;
 
-    m_projectFiles = updateProjectFiles();
-    m_includePaths = updateIncludePaths();
-    m_frameworkPaths = updateFrameworkPaths();
-    m_definedMacros = updateDefinedMacros();
+    m_projectFiles = internalProjectFiles();
+    m_includePaths = internalIncludePaths();
+    m_frameworkPaths = internalFrameworkPaths();
+    m_definedMacros = internalDefinedMacros();
     m_dirty = false;
 }
 
-QStringList CppModelManager::updateProjectFiles() const
+QStringList CppModelManager::internalProjectFiles() const
 {
     QStringList files;
     QMapIterator<ProjectExplorer::Project *, ProjectInfo> it(m_projects);
@@ -504,10 +500,11 @@ QStringList CppModelManager::updateProjectFiles() const
         ProjectInfo pinfo = it.value();
         files += pinfo.sourceFiles;
     }
+    files.removeDuplicates();
     return files;
 }
 
-QStringList CppModelManager::updateIncludePaths() const
+QStringList CppModelManager::internalIncludePaths() const
 {
     QStringList includePaths;
     QMapIterator<ProjectExplorer::Project *, ProjectInfo> it(m_projects);
@@ -516,10 +513,11 @@ QStringList CppModelManager::updateIncludePaths() const
         ProjectInfo pinfo = it.value();
         includePaths += pinfo.includePaths;
     }
+    includePaths.removeDuplicates();
     return includePaths;
 }
 
-QStringList CppModelManager::updateFrameworkPaths() const
+QStringList CppModelManager::internalFrameworkPaths() const
 {
     QStringList frameworkPaths;
     QMapIterator<ProjectExplorer::Project *, ProjectInfo> it(m_projects);
@@ -528,10 +526,11 @@ QStringList CppModelManager::updateFrameworkPaths() const
         ProjectInfo pinfo = it.value();
         frameworkPaths += pinfo.frameworkPaths;
     }
+    frameworkPaths.removeDuplicates();
     return frameworkPaths;
 }
 
-QByteArray CppModelManager::updateDefinedMacros() const
+QByteArray CppModelManager::internalDefinedMacros() const
 {
     QByteArray macros;
     QMapIterator<ProjectExplorer::Project *, ProjectInfo> it(m_projects);
@@ -588,6 +587,7 @@ void CppModelManager::updateProjectInfo(const ProjectInfo &pinfo)
         return;
 
     m_projects.insert(pinfo.project, pinfo);
+    m_dirty = true;
 }
 
 QFuture<void> CppModelManager::refreshSourceFiles(const QStringList &sourceFiles)
diff --git a/src/plugins/cpptools/cppmodelmanager.h b/src/plugins/cpptools/cppmodelmanager.h
index 6bc7d0c1c55809a5d8bf9c143d384174564e6fbc..3b2f4e19993248a6e31c124c902568ed89947d9d 100644
--- a/src/plugins/cpptools/cppmodelmanager.h
+++ b/src/plugins/cpptools/cppmodelmanager.h
@@ -133,10 +133,10 @@ private:
     }
 
     void ensureUpdated();
-    QStringList updateProjectFiles() const;
-    QStringList updateIncludePaths() const;
-    QStringList updateFrameworkPaths() const;
-    QByteArray updateDefinedMacros() const;
+    QStringList internalProjectFiles() const;
+    QStringList internalIncludePaths() const;
+    QStringList internalFrameworkPaths() const;
+    QByteArray internalDefinedMacros() const;
 
     static void parse(QFutureInterface<void> &future,
                       CppPreprocessor *preproc,