diff --git a/src/plugins/cppeditor/cppeditor.cpp b/src/plugins/cppeditor/cppeditor.cpp index a933f866f68..c8518184c9d 100644 --- a/src/plugins/cppeditor/cppeditor.cpp +++ b/src/plugins/cppeditor/cppeditor.cpp @@ -576,6 +576,13 @@ void CPPEditorWidget::ctor() SIGNAL(commentsSettingsChanged(CppTools::CommentsSettings)), this, SLOT(onCommentsSettingsChanged(CppTools::CommentsSettings))); + + connect(baseTextDocument(), SIGNAL(filePathChanged(QString,QString)), + this, SLOT(onFilePathChanged())); + connect(baseTextDocument(), SIGNAL(mimeTypeChanged()), + this, SLOT(onMimeTypeChanged())); + onFilePathChanged(); + onMimeTypeChanged(); } CPPEditorWidget::~CPPEditorWidget() @@ -718,27 +725,6 @@ void CPPEditorWidget::selectAll() BaseTextEditorWidget::selectAll(); } -void CPPEditorWidget::setMimeType(const QString &mt) -{ - const QString &filePath = editor()->document()->filePath(); - const QString &projectFile = ProjectExplorer::SessionManager::value( - QLatin1String(Constants::CPP_PREPROCESSOR_PROJECT_PREFIX) + filePath).toString(); - const QByteArray &additionalDirectives = ProjectExplorer::SessionManager::value( - projectFile + QLatin1Char(',') + filePath).toString().toUtf8(); - - QSharedPointer updater - = m_modelManager->cppEditorSupport(editor())->snapshotUpdater(); - updater->setProjectPart(m_modelManager->projectPartForProjectFile(projectFile)); - updater->setEditorDefines(additionalDirectives); - - m_preprocessorButton->setProperty("highlightWidget", !additionalDirectives.trimmed().isEmpty()); - m_preprocessorButton->update(); - - BaseTextEditorWidget::setMimeType(mt); - setObjCEnabled(mt == QLatin1String(CppTools::Constants::OBJECTIVE_C_SOURCE_MIMETYPE) - || mt == QLatin1String(CppTools::Constants::OBJECTIVE_CPP_SOURCE_MIMETYPE)); -} - void CPPEditorWidget::setObjCEnabled(bool onoff) { m_objcEnabled = onoff; @@ -1862,6 +1848,33 @@ void CPPEditorWidget::onFunctionDeclDefLinkFound(QSharedPointerfilePath(); + if (!filePath.isEmpty()) { + const QString &projectFile = ProjectExplorer::SessionManager::value( + QLatin1String(Constants::CPP_PREPROCESSOR_PROJECT_PREFIX) + filePath).toString(); + additionalDirectives = ProjectExplorer::SessionManager::value( + projectFile + QLatin1Char(',') + filePath).toString().toUtf8(); + + QSharedPointer updater + = m_modelManager->cppEditorSupport(editor())->snapshotUpdater(); + updater->setProjectPart(m_modelManager->projectPartForProjectFile(projectFile)); + updater->setEditorDefines(additionalDirectives); + } + m_preprocessorButton->setProperty("highlightWidget", !additionalDirectives.trimmed().isEmpty()); + m_preprocessorButton->update(); +} + +void CPPEditorWidget::onMimeTypeChanged() +{ + const QString &mt = baseTextDocument()->mimeType(); + setObjCEnabled(mt == QLatin1String(CppTools::Constants::OBJECTIVE_C_SOURCE_MIMETYPE) + || mt == QLatin1String(CppTools::Constants::OBJECTIVE_CPP_SOURCE_MIMETYPE)); +} + void CPPEditorWidget::applyDeclDefLinkChanges(bool jumpToMatch) { if (!m_declDefLink) diff --git a/src/plugins/cppeditor/cppeditor.h b/src/plugins/cppeditor/cppeditor.h index 057f9784234..5e8fc642d62 100644 --- a/src/plugins/cppeditor/cppeditor.h +++ b/src/plugins/cppeditor/cppeditor.h @@ -113,8 +113,6 @@ public: virtual void cut(); // reimplemented from BaseTextEditorWidget virtual void selectAll(); // reimplemented from BaseTextEditorWidget - virtual void setMimeType(const QString &mt); - void setObjCEnabled(bool onoff); bool isObjCEnabled() const; @@ -173,6 +171,8 @@ private Q_SLOTS: void updateFunctionDeclDefLink(); void updateFunctionDeclDefLinkNow(); void onFunctionDeclDefLinkFound(QSharedPointer link); + void onFilePathChanged(); + void onMimeTypeChanged(); void onDocumentUpdated(); void onContentsChanged(int position, int charsRemoved, int charsAdded); void updatePreprocessorButtonTooltip();