diff --git a/src/plugins/genericprojectmanager/genericproject.cpp b/src/plugins/genericprojectmanager/genericproject.cpp index 6b77b46d573..91ad80d74cb 100644 --- a/src/plugins/genericprojectmanager/genericproject.cpp +++ b/src/plugins/genericprojectmanager/genericproject.cpp @@ -59,6 +59,27 @@ using namespace ProjectExplorer; namespace GenericProjectManager { namespace Internal { +static QList cppMimeTypes() +{ + QStringList mimeTypesNames; + mimeTypesNames << QLatin1String(CppTools::Constants::C_SOURCE_MIMETYPE) + << QLatin1String(CppTools::Constants::C_HEADER_MIMETYPE) + << QLatin1String(CppTools::Constants::CPP_SOURCE_MIMETYPE) + << QLatin1String(CppTools::Constants::OBJECTIVE_CPP_SOURCE_MIMETYPE) + << QLatin1String(CppTools::Constants::CPP_HEADER_MIMETYPE); + + QList mimeTypes; + + const Core::MimeDatabase *mimeDatabase = Core::ICore::mimeDatabase(); + foreach (const QString &typeName, mimeTypesNames) { + Core::MimeType mimeType = mimeDatabase->findByType(typeName); + if (!mimeType.isNull()) + mimeTypes.append(mimeType); + } + + return mimeTypes; +} + //////////////////////////////////////////////////////////////////////////////////// // // GenericProject @@ -269,18 +290,17 @@ void GenericProject::refresh(RefreshOptions options) // ### add _defines. // Add any C/C++ files to be parsed - QStringList cppMimeTypes; - cppMimeTypes << QLatin1String(CppTools::Constants::C_SOURCE_MIMETYPE) - << QLatin1String(CppTools::Constants::C_HEADER_MIMETYPE) - << QLatin1String(CppTools::Constants::CPP_SOURCE_MIMETYPE) - << QLatin1String(CppTools::Constants::OBJECTIVE_CPP_SOURCE_MIMETYPE) - << QLatin1String(CppTools::Constants::CPP_HEADER_MIMETYPE); + const QList mimeTypes = cppMimeTypes(); + QFileInfo fileInfo; - const Core::MimeDatabase *mimeDatabase = Core::ICore::mimeDatabase(); foreach (const QString &file, files()) { - const Core::MimeType mimeType = mimeDatabase->findByFile(QFileInfo(file)); - if (cppMimeTypes.contains(mimeType.type())) - part->sourceFiles += file; + fileInfo.setFile(file); + foreach (const Core::MimeType &mimeType, mimeTypes) { + if (mimeType.matchesFile(fileInfo)) { + part->sourceFiles += file; + break; + } + } } QStringList filesToUpdate;