diff --git a/src/plugins/cpptools/cppcodemodelsettings.cpp b/src/plugins/cpptools/cppcodemodelsettings.cpp index 5aed9f95dc3812be6f1a339c8af4f877aae0b8de..35555868a1359ef9c259a0105d0711febc20d7dd 100644 --- a/src/plugins/cpptools/cppcodemodelsettings.cpp +++ b/src/plugins/cpptools/cppcodemodelsettings.cpp @@ -107,6 +107,15 @@ void CppCodeModelSettings::setModelManagerSupportIdForMimeType(const QString &mi m_modelManagerSupportByMimeType.insert(theMimeType, id); } +bool CppCodeModelSettings::hasModelManagerSupportIdForMimeType(const QString &mimeType, + const QString &id) const +{ + if (mimeType == cHeaderMimeType) + return m_modelManagerSupportByMimeType.value(cppHeaderMimeType) == id; + else + return m_modelManagerSupportByMimeType.value(mimeType) == id; +} + void CppCodeModelSettings::setIdForMimeType(const QVariant &var, const QString &mimeType) { QHash mimeToId = var.toHash(); diff --git a/src/plugins/cpptools/cppcodemodelsettings.h b/src/plugins/cpptools/cppcodemodelsettings.h index 067209ff3c27539f1f5293c88eed89ccf37cabbf..8c07c1671f1857a04743c6357c626c23f8c16ed6 100644 --- a/src/plugins/cpptools/cppcodemodelsettings.h +++ b/src/plugins/cpptools/cppcodemodelsettings.h @@ -62,6 +62,7 @@ public: QString modelManagerSupportIdForMimeType(const QString &mimeType) const; void setModelManagerSupportIdForMimeType(const QString &mimeType, const QString &id); + bool hasModelManagerSupportIdForMimeType(const QString &mimeType, const QString &id) const; const QHash &availableModelManagerSupportProvidersByName() const { return m_modelManagerSupportsByName; } diff --git a/src/plugins/cpptools/cppmodelmanager.cpp b/src/plugins/cpptools/cppmodelmanager.cpp index be1fc9e25856559e570912128fdd829cfe7cb7a0..133bbae3cf45b988432afe427534c76ea33eecd2 100644 --- a/src/plugins/cpptools/cppmodelmanager.cpp +++ b/src/plugins/cpptools/cppmodelmanager.cpp @@ -951,6 +951,14 @@ bool CppModelManager::isCppEditor(Core::IEditor *editor) const return editor->context().contains(ProjectExplorer::Constants::LANG_CXX); } +bool CppModelManager::isManagedByModelManagerSupport(Core::IDocument *document, const QString &id) const +{ + auto documentMimeTupe = document->mimeType(); + auto codeModelSettings = CppToolsPlugin::instance()->codeModelSettings(); + + return codeModelSettings->hasModelManagerSupportIdForMimeType(documentMimeTupe, id); +} + void CppModelManager::emitDocumentUpdated(Document::Ptr doc) { if (replaceDocument(doc)) diff --git a/src/plugins/cpptools/cppmodelmanager.h b/src/plugins/cpptools/cppmodelmanager.h index b9ac4a9b0c60d1f7f0b226a7e948957ec7c46c4b..464cdc61462811057f70ffe13aaf3149d46c3564 100644 --- a/src/plugins/cpptools/cppmodelmanager.h +++ b/src/plugins/cpptools/cppmodelmanager.h @@ -42,7 +42,11 @@ #include #include -namespace Core { class IEditor; } + +namespace Core { +class IDocument; +class IEditor; +} namespace CPlusPlus { class LookupContext; } namespace ProjectExplorer { class Project; } namespace TextEditor { class TextDocument; } @@ -116,6 +120,7 @@ public: void emitAbstractEditorSupportRemoved(const QString &filePath); bool isCppEditor(Core::IEditor *editor) const; + bool isManagedByModelManagerSupport(Core::IDocument *document, const QString &id) const; QSet abstractEditorSupports() const; void addExtraEditorSupport(AbstractEditorSupport *editorSupport);