Support include completion for frameworks on Mac.

Which is 'quite' important, since Qt builds by default generate
frameworks.
This commit is contained in:
con
2009-10-01 17:01:13 +02:00
parent 742740634e
commit f006183b3d
3 changed files with 38 additions and 0 deletions

View File

@@ -809,6 +809,7 @@ void CppModelManager::updateProjectInfo(const ProjectInfo &pinfo)
QFuture<void> result = QtConcurrent::run(&CppModelManager::updateIncludesInPaths,
this,
pinfo.includePaths,
pinfo.frameworkPaths,
m_headerSuffixes);
if (pinfo.includePaths.size() > 1) {
@@ -1127,6 +1128,7 @@ void CppModelManager::onAboutToUnloadSession()
void CppModelManager::updateIncludesInPaths(QFutureInterface<void> &future,
CppModelManager *manager,
QStringList paths,
QStringList frameworkPaths,
QStringList suffixes)
{
QMap<QString, QStringList> entriesInPaths;
@@ -1137,6 +1139,24 @@ void CppModelManager::updateIncludesInPaths(QFutureInterface<void> &future,
future.setProgressRange(0, paths.size());
// Add framework header directories to path list
QStringList frameworkFilter;
frameworkFilter << QLatin1String("*.framework");
QStringListIterator fwPathIt(frameworkPaths);
while (fwPathIt.hasNext()) {
const QString &fwPath = fwPathIt.next();
QStringList entriesInFrameworkPath;
const QStringList &frameworks = QDir(fwPath).entryList(frameworkFilter, QDir::Dirs | QDir::NoDotAndDotDot);
QStringListIterator fwIt(frameworks);
while (fwIt.hasNext()) {
QString framework = fwIt.next();
paths.append(fwPath + QLatin1Char('/') + framework + QLatin1String("/Headers"));
framework.chop(10); // remove the ".framework"
entriesInFrameworkPath.append(framework + QLatin1Char('/'));
}
entriesInPaths.insert(fwPath, entriesInFrameworkPath);
}
while (!paths.isEmpty()) {
if (future.isPaused())
future.waitForResume();