diff --git a/src/plugins/cppeditor/cppeditor.pro b/src/plugins/cppeditor/cppeditor.pro
index 2fbf3b46e489184f8ea506c52eccbc3f84406215..64ee6631957b7fad38bde663305a48c8962e74f1 100644
--- a/src/plugins/cppeditor/cppeditor.pro
+++ b/src/plugins/cppeditor/cppeditor.pro
@@ -23,4 +23,4 @@ SOURCES += cppplugin.cpp \
     cppclasswizard.cpp
 RESOURCES += cppeditor.qrc
 
-OTHER_FILES += CppEditor.pluginspec
+OTHER_FILES += CppEditor.pluginspec CppEditor.mimetypes.xml
diff --git a/src/plugins/cpptools/cpptoolsconstants.h b/src/plugins/cpptools/cpptoolsconstants.h
index 73002aaface593425ddebcf70d1dd8cd71f891f7..7528ddc79e482311dff112080495c13ee3dec529 100644
--- a/src/plugins/cpptools/cpptoolsconstants.h
+++ b/src/plugins/cpptools/cpptoolsconstants.h
@@ -41,6 +41,7 @@ const char * const TASK_INDEX               = "CppTools.Task.Index";
 const char * const C_SOURCE_MIMETYPE = "text/x-csrc";
 const char * const C_HEADER_MIMETYPE = "text/x-chdr";
 const char * const CPP_SOURCE_MIMETYPE = "text/x-c++src";
+const char * const OBJECTIVE_CPP_SOURCE_MIMETYPE = "text/x-objcsrc";
 const char * const CPP_HEADER_MIMETYPE = "text/x-c++hdr";
 
 // QSettings keys for use by the "New Class" wizards.
diff --git a/src/plugins/cpptools/cpptoolsplugin.cpp b/src/plugins/cpptools/cpptoolsplugin.cpp
index cdfda4c24bd8d2d5fcb584ac542b2d4baf9172dc..4aa16e9e23baafd4ada51a1bb5cd25359f53bd54 100644
--- a/src/plugins/cpptools/cpptoolsplugin.cpp
+++ b/src/plugins/cpptools/cpptoolsplugin.cpp
@@ -185,6 +185,7 @@ enum FileType {
     HeaderFile,
     C_SourceFile,
     CPP_SourceFile,
+    ObjectiveCPP_SourceFile,
     UnknownType
 };
 
@@ -198,6 +199,8 @@ static inline FileType fileType(const Core::MimeDatabase *mimeDatase, const  QFi
         return C_SourceFile;
     if (typeName == QLatin1String(CppTools::Constants::CPP_SOURCE_MIMETYPE))
         return CPP_SourceFile;
+    if (typeName == QLatin1String(CppTools::Constants::OBJECTIVE_CPP_SOURCE_MIMETYPE))
+        return ObjectiveCPP_SourceFile;
     if (typeName == QLatin1String(CppTools::Constants::C_HEADER_MIMETYPE)
         || typeName == QLatin1String(CppTools::Constants::CPP_HEADER_MIMETYPE))
         return HeaderFile;
@@ -212,11 +215,13 @@ static QStringList matchingCandidateSuffixes(const Core::MimeDatabase *mimeDatas
     case UnknownType:
         break;
     case HeaderFile: // Note that C/C++ headers are undistinguishable
-        return mimeDatase->findByType(QLatin1String(CppTools::Constants::C_SOURCE_MIMETYPE)).suffixes() +
-               mimeDatase->findByType(QLatin1String(CppTools::Constants::CPP_SOURCE_MIMETYPE)).suffixes();
+        return mimeDatase->findByType(QLatin1String(CppTools::Constants::C_SOURCE_MIMETYPE)).suffixes()
+               + mimeDatase->findByType(QLatin1String(CppTools::Constants::CPP_SOURCE_MIMETYPE)).suffixes()
+               + mimeDatase->findByType(QLatin1String(CppTools::Constants::OBJECTIVE_CPP_SOURCE_MIMETYPE)).suffixes();
     case C_SourceFile:
         return mimeDatase->findByType(QLatin1String(CppTools::Constants::C_HEADER_MIMETYPE)).suffixes();
     case CPP_SourceFile:
+    case ObjectiveCPP_SourceFile:
         return mimeDatase->findByType(QLatin1String(CppTools::Constants::CPP_HEADER_MIMETYPE)).suffixes();
     }
     return QStringList();