From c9e50605ddbeb890d4559c76d5f00c64106237f2 Mon Sep 17 00:00:00 2001
From: Roberto Raggi <roberto.raggi@nokia.com>
Date: Mon, 15 Mar 2010 18:09:29 +0100
Subject: [PATCH] Get rid of extra (non Creator-friendly) include paths.

---
 src/plugins/cpptools/cppmodelmanager.cpp | 26 +++++++++++++++++++++++-
 1 file changed, 25 insertions(+), 1 deletion(-)

diff --git a/src/plugins/cpptools/cppmodelmanager.cpp b/src/plugins/cpptools/cppmodelmanager.cpp
index d374f813d75..977b0677ef1 100644
--- a/src/plugins/cpptools/cppmodelmanager.cpp
+++ b/src/plugins/cpptools/cppmodelmanager.cpp
@@ -190,7 +190,31 @@ void CppPreprocessor::setWorkingCopy(const CppTools::CppModelManagerInterface::W
 { m_workingCopy = workingCopy; }
 
 void CppPreprocessor::setIncludePaths(const QStringList &includePaths)
-{ m_includePaths = includePaths; }
+{
+    m_includePaths.clear();
+
+    for (int i = 0; i < includePaths.size(); ++i) {
+        const QString path = includePaths.at(i);
+
+#ifdef Q_OS_DARWIN
+        if (i + 1 < includePaths.size() && path.endsWith(QLatin1String(".framework/Headers"))) {
+            const QFileInfo pathInfo(path);
+            const QFileInfo frameworkFileInfo(pathInfo.path());
+            const QString frameworkName = frameworkFileInfo.baseName();
+
+            const QFileInfo nextIncludePath = includePaths.at(i + 1);
+            if (nextIncludePath.fileName() == frameworkName) {
+                // We got a QtXXX.framework/Headers followed by $QTDIR/include/QtXXX.
+                // In this case we prefer to include files from $QTDIR/include/QtXXX.
+                continue;
+            }
+        }
+        m_includePaths.append(path);
+#else
+        m_includePaths.append(path);
+#endif
+    }
+}
 
 void CppPreprocessor::setFrameworkPaths(const QStringList &frameworkPaths)
 { m_frameworkPaths = frameworkPaths; }
-- 
GitLab