diff --git a/src/plugins/cppeditor/cppeditor.cpp b/src/plugins/cppeditor/cppeditor.cpp
index f53b7aae75993b8c70a470b1c0e691bd3dfe0f9a..a9f9ea958823f676433aa0571273dfa5416a6f00 100644
--- a/src/plugins/cppeditor/cppeditor.cpp
+++ b/src/plugins/cppeditor/cppeditor.cpp
@@ -67,6 +67,7 @@
 #include <coreplugin/actionmanager/actionmanager.h>
 #include <coreplugin/editormanager/ieditor.h>
 #include <coreplugin/editormanager/editormanager.h>
+#include <coreplugin/mimedatabase.h>
 #include <utils/uncommentselection.h>
 #include <extensionsystem/pluginmanager.h>
 #include <projectexplorer/projectexplorerconstants.h>
@@ -1751,6 +1752,13 @@ const char *CPPEditorEditable::kind() const
     return CppEditor::Constants::CPPEDITOR_KIND;
 }
 
+bool CPPEditorEditable::open(const QString & fileName)
+{
+    bool b = TextEditor::BaseTextEditorEditable::open(fileName);    
+    editor()->setMimeType(Core::ICore::instance()->mimeDatabase()->findByFile(QFileInfo(fileName)).type());
+    return b;
+}
+
 void CPPEditor::setFontSettings(const TextEditor::FontSettings &fs)
 {
     TextEditor::BaseTextEditor::setFontSettings(fs);
diff --git a/src/plugins/cppeditor/cppeditor.h b/src/plugins/cppeditor/cppeditor.h
index 699cb9e49fa791fb4c6e58be9c3be9ec1f97e3c1..68159ee9100dbcb828c695f6d5feb16ddb71ce35 100644
--- a/src/plugins/cppeditor/cppeditor.h
+++ b/src/plugins/cppeditor/cppeditor.h
@@ -164,6 +164,7 @@ public:
     const char *kind() const;
 
     bool isTemporary() const { return false; }
+    virtual bool open(const QString & fileName);
 
 private:
     QList<int> m_context;
diff --git a/src/plugins/cppeditor/cppplugin.cpp b/src/plugins/cppeditor/cppplugin.cpp
index 3372fd336d1cae57d37bcb51f2ec9ea0062d9980..f27e82bdb9634786af68fd9d225fb4be2edc3f3d 100644
--- a/src/plugins/cppeditor/cppplugin.cpp
+++ b/src/plugins/cppeditor/cppplugin.cpp
@@ -97,7 +97,6 @@ Core::IEditor *CppEditorFactory::createEditor(QWidget *parent)
 {
     CPPEditor *editor = new CPPEditor(parent);
     editor->setRevisionsVisible(true);
-    editor->setMimeType(CppEditor::Constants::CPP_SOURCE_MIMETYPE);
     m_owner->initializeEditor(editor);
     return editor->editableInterface();
 }