diff options
author | Christian Kandeler <[email protected]> | 2024-04-12 12:30:30 +0200 |
---|---|---|
committer | Christian Kandeler <[email protected]> | 2024-04-15 08:57:58 +0000 |
commit | ac4bf6901b2902789b13c0534426e9edfbb06f5a (patch) | |
tree | 987731ba44e0da695f248111e7ee043580f2dc9b /src/plugins | |
parent | d51128fb8a2d42cf70974356dcb95922f612d7c3 (diff) |
CppEditor: Simplify CppCodeModelSettings
We don't need the QObject wrapper.
Change-Id: Ief0e1314db40cb403c56fe0e660c5dffa326f83c
Reviewed-by: <[email protected]>
Reviewed-by: David Schulz <[email protected]>
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/clangtools/clangfileinfo.h | 4 | ||||
-rw-r--r-- | src/plugins/cppeditor/baseeditordocumentprocessor.cpp | 4 | ||||
-rw-r--r-- | src/plugins/cppeditor/builtineditordocumentprocessor.cpp | 2 | ||||
-rw-r--r-- | src/plugins/cppeditor/cppcodemodelsettings.cpp | 117 | ||||
-rw-r--r-- | src/plugins/cppeditor/cppcodemodelsettings.h | 66 | ||||
-rw-r--r-- | src/plugins/cppeditor/cppeditorplugin.cpp | 2 | ||||
-rw-r--r-- | src/plugins/cppeditor/cppmodelmanager.cpp | 13 | ||||
-rw-r--r-- | src/plugins/cppeditor/cppmodelmanager.h | 3 | ||||
-rw-r--r-- | src/plugins/cppeditor/cppmodelmanager_test.cpp | 9 | ||||
-rw-r--r-- | src/plugins/cppeditor/projectinfo.cpp | 8 |
10 files changed, 103 insertions, 125 deletions
diff --git a/src/plugins/clangtools/clangfileinfo.h b/src/plugins/clangtools/clangfileinfo.h index deb53f60588..bc54de3dc20 100644 --- a/src/plugins/clangtools/clangfileinfo.h +++ b/src/plugins/clangtools/clangfileinfo.h @@ -24,7 +24,7 @@ public: CppEditor::ProjectPart::ConstPtr projectPart) : file(std::move(file)) , kind(kind) - , settings(settings.data()) + , settings(settings) , projectPart(projectPart) {} @@ -34,7 +34,7 @@ public: Utils::FilePath file; CppEditor::ProjectFile::Kind kind; - CppEditor::CppCodeModelSettings::Data settings; + CppEditor::CppCodeModelSettings settings; CppEditor::ProjectPart::ConstPtr projectPart; }; using FileInfos = std::vector<FileInfo>; diff --git a/src/plugins/cppeditor/baseeditordocumentprocessor.cpp b/src/plugins/cppeditor/baseeditordocumentprocessor.cpp index 786999223ec..e2c600681dd 100644 --- a/src/plugins/cppeditor/baseeditordocumentprocessor.cpp +++ b/src/plugins/cppeditor/baseeditordocumentprocessor.cpp @@ -37,10 +37,10 @@ BaseEditorDocumentProcessor::~BaseEditorDocumentProcessor() = default; void BaseEditorDocumentProcessor::run(bool projectsUpdated) { if (projectsUpdated) - m_settings.setData(CppCodeModelSettings::settingsForFile(m_filePath).data()); + m_settings = CppCodeModelSettings::settingsForFile(m_filePath); const Utils::Language languagePreference - = m_settings.interpretAmbigiousHeadersAsC() ? Utils::Language::C : Utils::Language::Cxx; + = m_settings.interpretAmbigiousHeadersAsC ? Utils::Language::C : Utils::Language::Cxx; runImpl({CppModelManager::workingCopy(), ProjectExplorer::ProjectManager::startupProject(), diff --git a/src/plugins/cppeditor/builtineditordocumentprocessor.cpp b/src/plugins/cppeditor/builtineditordocumentprocessor.cpp index 5f827c74ce9..33f415fe6be 100644 --- a/src/plugins/cppeditor/builtineditordocumentprocessor.cpp +++ b/src/plugins/cppeditor/builtineditordocumentprocessor.cpp @@ -151,7 +151,7 @@ BuiltinEditorDocumentProcessor::BuiltinEditorDocumentProcessor(TextEditor::TextD using namespace Internal; BaseEditorDocumentParser::Configuration config = m_parser->configuration(); - config.usePrecompiledHeaders = settings().pchUsage() != CppCodeModelSettings::PchUse_None; + config.usePrecompiledHeaders = settings().pchUsage != CppCodeModelSettings::PchUse_None; m_parser->setConfiguration(config); m_semanticHighlighter->setHighlightingRunner( diff --git a/src/plugins/cppeditor/cppcodemodelsettings.cpp b/src/plugins/cppeditor/cppcodemodelsettings.cpp index 4791fd528ee..f24baaf8be6 100644 --- a/src/plugins/cppeditor/cppcodemodelsettings.cpp +++ b/src/plugins/cppeditor/cppcodemodelsettings.cpp @@ -6,6 +6,7 @@ #include "compileroptionsbuilder.h" #include "cppeditorconstants.h" #include "cppeditortr.h" +#include "cppmodelmanager.h" #include <coreplugin/dialogs/ioptionspage.h> #include <coreplugin/icore.h> @@ -49,19 +50,19 @@ static Key useBuiltinPreprocessorKey() { return Constants::CPPEDITOR_USE_BUILTIN static Key indexerFileSizeLimitKey() { return Constants::CPPEDITOR_INDEXER_FILE_SIZE_LIMIT; } static Key useGlobalSettingsKey() { return "useGlobalSettings"; } -bool operator==(const CppEditor::CppCodeModelSettings::Data &s1, - const CppEditor::CppCodeModelSettings::Data &s2) +bool operator==(const CppEditor::CppCodeModelSettings &s1, + const CppEditor::CppCodeModelSettings &s2) { return s1.pchUsage == s2.pchUsage && s1.interpretAmbigiousHeadersAsC == s2.interpretAmbigiousHeadersAsC && s1.skipIndexingBigFiles == s2.skipIndexingBigFiles && s1.useBuiltinPreprocessor == s2.useBuiltinPreprocessor && s1.indexerFileSizeLimitInMb == s2.indexerFileSizeLimitInMb - && s1.categorizeFindReferences == s2.categorizeFindReferences + && s1.m_categorizeFindReferences == s2.m_categorizeFindReferences && s1.ignoreFiles == s2.ignoreFiles && s1.ignorePattern == s2.ignorePattern; } -Store CppCodeModelSettings::Data::toMap() const +Store CppCodeModelSettings::toMap() const { Store store; store.insert(pchUsageKey(), pchUsage); @@ -74,15 +75,15 @@ Store CppCodeModelSettings::Data::toMap() const return store; } -void CppCodeModelSettings::Data::fromMap(const Utils::Store &store) +void CppCodeModelSettings::fromMap(const Utils::Store &store) { - const CppCodeModelSettings::Data def; + const CppCodeModelSettings def; pchUsage = static_cast<PCHUsage>(store.value(pchUsageKey(), def.pchUsage).toInt()); - interpretAmbigiousHeadersAsC = store - .value(interpretAmbiguousHeadersAsCHeadersKey(), - def.interpretAmbigiousHeadersAsC) - .toBool(); - skipIndexingBigFiles = store.value(skipIndexingBigFilesKey(), def.skipIndexingBigFiles).toBool(); + interpretAmbigiousHeadersAsC + = store.value(interpretAmbiguousHeadersAsCHeadersKey(), def.interpretAmbigiousHeadersAsC) + .toBool(); + skipIndexingBigFiles + = store.value(skipIndexingBigFilesKey(), def.skipIndexingBigFiles).toBool(); ignoreFiles = store.value(ignoreFilesKey(), def.ignoreFiles).toBool(); ignorePattern = store.value(ignorePatternKey(), def.ignorePattern).toString(); useBuiltinPreprocessor @@ -93,12 +94,13 @@ void CppCodeModelSettings::Data::fromMap(const Utils::Store &store) void CppCodeModelSettings::fromSettings(QtcSettings *s) { - m_data.fromMap(storeFromSettings(Constants::CPPEDITOR_SETTINGSGROUP, s)); + fromMap(storeFromSettings(Constants::CPPEDITOR_SETTINGSGROUP, s)); } void CppCodeModelSettings::toSettings(QtcSettings *s) { - storeToSettingsWithDefault(Constants::CPPEDITOR_SETTINGSGROUP, s, m_data.toMap(), Data().toMap()); + storeToSettingsWithDefault( + Constants::CPPEDITOR_SETTINGSGROUP, s, toMap(), CppCodeModelSettings().toMap()); } CppCodeModelSettings &CppCodeModelSettings::globalInstance() @@ -109,7 +111,7 @@ CppCodeModelSettings &CppCodeModelSettings::globalInstance() CppCodeModelSettings CppCodeModelSettings::settingsForProject(const ProjectExplorer::Project *project) { - return {CppCodeModelProjectSettings(const_cast<ProjectExplorer::Project *>(project)).data()}; + return {CppCodeModelProjectSettings(const_cast<ProjectExplorer::Project *>(project)).settings()}; } CppCodeModelSettings CppCodeModelSettings::settingsForProject(const Utils::FilePath &projectFile) @@ -122,25 +124,25 @@ CppCodeModelSettings CppCodeModelSettings::settingsForFile(const Utils::FilePath return settingsForProject(ProjectManager::projectForFile(file)); } -void CppCodeModelSettings::setGlobalData(const Data &data) +void CppCodeModelSettings::setGlobal(const CppCodeModelSettings &settings) { - if (globalInstance().m_data == data) + if (globalInstance() == settings) return; - globalInstance().m_data = data; + globalInstance() = settings; globalInstance().toSettings(Core::ICore::settings()); - emit globalInstance().changed(nullptr); + CppModelManager::handleSettingsChange(nullptr); } -CppCodeModelSettings::PCHUsage CppCodeModelSettings::pchUsage(const Project *project) +CppCodeModelSettings::PCHUsage CppCodeModelSettings::pchUsageForProject(const Project *project) { - return CppCodeModelSettings::settingsForProject(project).pchUsage(); + return CppCodeModelSettings::settingsForProject(project).pchUsage; } UsePrecompiledHeaders CppCodeModelSettings::usePrecompiledHeaders() const { - return pchUsage() == CppCodeModelSettings::PchUse_None ? UsePrecompiledHeaders::No - : UsePrecompiledHeaders::Yes; + return pchUsage == CppCodeModelSettings::PchUse_None ? UsePrecompiledHeaders::No + : UsePrecompiledHeaders::Yes; } UsePrecompiledHeaders CppCodeModelSettings::usePrecompiledHeaders(const Project *project) @@ -150,17 +152,17 @@ UsePrecompiledHeaders CppCodeModelSettings::usePrecompiledHeaders(const Project int CppCodeModelSettings::effectiveIndexerFileSizeLimitInMb() const { - return skipIndexingBigFiles() ? indexerFileSizeLimitInMb() : -1; + return skipIndexingBigFiles ? indexerFileSizeLimitInMb : -1; } bool CppCodeModelSettings::categorizeFindReferences() { - return globalInstance().m_data.categorizeFindReferences; + return globalInstance().m_categorizeFindReferences; } void CppCodeModelSettings::setCategorizeFindReferences(bool categorize) { - globalInstance().m_data.categorizeFindReferences = categorize; + globalInstance().m_categorizeFindReferences = categorize; } CppCodeModelProjectSettings::CppCodeModelProjectSettings(ProjectExplorer::Project *project) @@ -169,23 +171,23 @@ CppCodeModelProjectSettings::CppCodeModelProjectSettings(ProjectExplorer::Projec loadSettings(); } -CppCodeModelSettings::Data CppCodeModelProjectSettings::data() const +CppCodeModelSettings CppCodeModelProjectSettings::settings() const { - return m_useGlobalSettings ? CppCodeModelSettings::globalInstance().data() : m_customSettings; + return m_useGlobalSettings ? CppCodeModelSettings::globalInstance() : m_customSettings; } -void CppCodeModelProjectSettings::setData(const CppCodeModelSettings::Data &data) +void CppCodeModelProjectSettings::setSettings(const CppCodeModelSettings &settings) { - m_customSettings = data; + m_customSettings = settings; saveSettings(); - emit CppCodeModelSettings::globalInstance().changed(m_project); + CppModelManager::handleSettingsChange(m_project); } void CppCodeModelProjectSettings::setUseGlobalSettings(bool useGlobal) { m_useGlobalSettings = useGlobal; saveSettings(); - emit CppCodeModelSettings::globalInstance().changed(m_project); + CppModelManager::handleSettingsChange(m_project); } void CppCodeModelProjectSettings::loadSettings() @@ -212,15 +214,14 @@ class CppCodeModelSettingsWidget final : public Core::IOptionsPageWidget { Q_OBJECT public: - CppCodeModelSettingsWidget(const CppCodeModelSettings::Data &data); - - CppCodeModelSettings::Data data() const; + CppCodeModelSettingsWidget(const CppCodeModelSettings &settings); + CppCodeModelSettings settings() const; signals: void settingsDataChanged(); private: - void apply() final { CppCodeModelSettings::globalInstance().setGlobalData(data()); } + void apply() final { CppCodeModelSettings::globalInstance().setGlobal(settings()); } QCheckBox *m_interpretAmbiguousHeadersAsCHeaders; QCheckBox *m_ignorePchCheckBox; @@ -231,18 +232,18 @@ private: QPlainTextEdit *m_ignorePatternTextEdit; }; -CppCodeModelSettingsWidget::CppCodeModelSettingsWidget(const CppCodeModelSettings::Data &data) +CppCodeModelSettingsWidget::CppCodeModelSettingsWidget(const CppCodeModelSettings &settings) { m_interpretAmbiguousHeadersAsCHeaders = new QCheckBox(Tr::tr("Interpret ambiguous headers as C headers")); m_skipIndexingBigFilesCheckBox = new QCheckBox(Tr::tr("Do not index files greater than")); - m_skipIndexingBigFilesCheckBox->setChecked(data.skipIndexingBigFiles); + m_skipIndexingBigFilesCheckBox->setChecked(settings.skipIndexingBigFiles); m_bigFilesLimitSpinBox = new QSpinBox; m_bigFilesLimitSpinBox->setSuffix(Tr::tr("MB")); m_bigFilesLimitSpinBox->setRange(1, 500); - m_bigFilesLimitSpinBox->setValue(data.indexerFileSizeLimitInMb); + m_bigFilesLimitSpinBox->setValue(settings.indexerFileSizeLimitInMb); m_ignoreFilesCheckBox = new QCheckBox(Tr::tr("Ignore files")); m_ignoreFilesCheckBox->setToolTip( @@ -250,8 +251,8 @@ CppCodeModelSettingsWidget::CppCodeModelSettingsWidget(const CppCodeModelSetting + Tr::tr("Ignore files that match these wildcard patterns, one wildcard per line.") + "</p></body></html>"); - m_ignoreFilesCheckBox->setChecked(data.ignoreFiles); - m_ignorePatternTextEdit = new QPlainTextEdit(data.ignorePattern); + m_ignoreFilesCheckBox->setChecked(settings.ignoreFiles); + m_ignorePatternTextEdit = new QPlainTextEdit(settings.ignorePattern); m_ignorePatternTextEdit->setToolTip(m_ignoreFilesCheckBox->toolTip()); m_ignorePatternTextEdit->setEnabled(m_ignoreFilesCheckBox->isChecked()); @@ -271,9 +272,9 @@ CppCodeModelSettingsWidget::CppCodeModelSettingsWidget(const CppCodeModelSetting (Tr::tr("Uncheck this to invoke the actual compiler " "to show a pre-processed source file in the editor.")); - m_interpretAmbiguousHeadersAsCHeaders->setChecked(data.interpretAmbigiousHeadersAsC); - m_ignorePchCheckBox->setChecked(data.pchUsage == CppCodeModelSettings::PchUse_None); - m_useBuiltinPreprocessorCheckBox->setChecked(data.useBuiltinPreprocessor); + m_interpretAmbiguousHeadersAsCHeaders->setChecked(settings.interpretAmbigiousHeadersAsC); + m_ignorePchCheckBox->setChecked(settings.pchUsage == CppCodeModelSettings::PchUse_None); + m_useBuiltinPreprocessorCheckBox->setChecked(settings.useBuiltinPreprocessor); using namespace Layouting; @@ -309,18 +310,18 @@ CppCodeModelSettingsWidget::CppCodeModelSettingsWidget(const CppCodeModelSetting timer, qOverload<>(&QTimer::start)); } -CppCodeModelSettings::Data CppCodeModelSettingsWidget::data() const +CppCodeModelSettings CppCodeModelSettingsWidget::settings() const { - CppCodeModelSettings::Data data; - data.interpretAmbigiousHeadersAsC = m_interpretAmbiguousHeadersAsCHeaders->isChecked(); - data.skipIndexingBigFiles = m_skipIndexingBigFilesCheckBox->isChecked(); - data.useBuiltinPreprocessor = m_useBuiltinPreprocessorCheckBox->isChecked(); - data.ignoreFiles = m_ignoreFilesCheckBox->isChecked(); - data.ignorePattern = m_ignorePatternTextEdit->toPlainText(); - data.indexerFileSizeLimitInMb = m_bigFilesLimitSpinBox->value(); - data.pchUsage = m_ignorePchCheckBox->isChecked() ? CppCodeModelSettings::PchUse_None - : CppCodeModelSettings::PchUse_BuildSystem; - return data; + CppCodeModelSettings settings; + settings.interpretAmbigiousHeadersAsC = m_interpretAmbiguousHeadersAsCHeaders->isChecked(); + settings.skipIndexingBigFiles = m_skipIndexingBigFilesCheckBox->isChecked(); + settings.useBuiltinPreprocessor = m_useBuiltinPreprocessorCheckBox->isChecked(); + settings.ignoreFiles = m_ignoreFilesCheckBox->isChecked(); + settings.ignorePattern = m_ignorePatternTextEdit->toPlainText(); + settings.indexerFileSizeLimitInMb = m_bigFilesLimitSpinBox->value(); + settings.pchUsage = m_ignorePchCheckBox->isChecked() ? CppCodeModelSettings::PchUse_None + : CppCodeModelSettings::PchUse_BuildSystem; + return settings; } class CppCodeModelSettingsPage final : public Core::IOptionsPage @@ -334,7 +335,7 @@ public: setDisplayCategory(Tr::tr("C++")); setCategoryIconPath(":/projectexplorer/images/settingscategory_cpp.png"); setWidgetCreator( - [] { return new CppCodeModelSettingsWidget(CppCodeModelSettings::globalInstance().data()); }); + [] { return new CppCodeModelSettingsWidget(CppCodeModelSettings::globalInstance()); }); } }; @@ -347,7 +348,7 @@ class CppCodeModelProjectSettingsWidget : public ProjectSettingsWidget { public: CppCodeModelProjectSettingsWidget(const CppCodeModelProjectSettings &settings) - : m_settings(settings), m_widget(settings.data()) + : m_settings(settings), m_widget(settings.settings()) { setGlobalSettingsId(Constants::CPP_CODE_MODEL_SETTINGS_ID); const auto layout = new QVBoxLayout(this); @@ -361,11 +362,11 @@ public: m_widget.setEnabled(!checked); m_settings.setUseGlobalSettings(checked); if (!checked) - m_settings.setData(m_widget.data()); + m_settings.setSettings(m_widget.settings()); }); connect(&m_widget, &CppCodeModelSettingsWidget::settingsDataChanged, - this, [this] { m_settings.setData(m_widget.data()); }); + this, [this] { m_settings.setSettings(m_widget.settings()); }); } private: diff --git a/src/plugins/cppeditor/cppcodemodelsettings.h b/src/plugins/cppeditor/cppcodemodelsettings.h index eedc01402bc..c7d414edce2 100644 --- a/src/plugins/cppeditor/cppcodemodelsettings.h +++ b/src/plugins/cppeditor/cppcodemodelsettings.h @@ -10,7 +10,6 @@ #include <utils/store.h> #include <utils/qtcsettings.h> -#include <QObject> #include <QStringList> namespace ProjectExplorer { class Project; } @@ -18,75 +17,56 @@ namespace ProjectExplorer { class Project; } namespace CppEditor { enum class UsePrecompiledHeaders; -class CPPEDITOR_EXPORT CppCodeModelSettings : public QObject +class CPPEDITOR_EXPORT CppCodeModelSettings { - Q_OBJECT - public: enum PCHUsage { PchUse_None = 1, PchUse_BuildSystem = 2 }; - class Data + CppCodeModelSettings() = default; + CppCodeModelSettings(const Utils::Store &store) { fromMap(store); } + + friend bool operator==(const CppCodeModelSettings &s1, const CppCodeModelSettings &s2); + friend bool operator!=(const CppCodeModelSettings &s1, const CppCodeModelSettings &s2) { - public: - Data() = default; - Data(const Utils::Store &store) { fromMap(store); } - Utils::Store toMap() const; - void fromMap(const Utils::Store &store); - - friend bool operator==(const Data &s1, const Data &s2); - friend bool operator!=(const Data &s1, const Data &s2) { return !(s1 == s2); } - - PCHUsage pchUsage = PchUse_BuildSystem; - bool interpretAmbigiousHeadersAsC = false; - bool skipIndexingBigFiles = true; - bool useBuiltinPreprocessor = true; - int indexerFileSizeLimitInMb = 5; - bool categorizeFindReferences = false; // Ephemeral! - bool ignoreFiles = false; - QString ignorePattern; - }; + return !(s1 == s2); + } - CppCodeModelSettings(const Data &data) : m_data(data) {} + Utils::Store toMap() const; + void fromMap(const Utils::Store &store); static CppCodeModelSettings &globalInstance(); // TODO: Make inaccessible. static CppCodeModelSettings settingsForProject(const ProjectExplorer::Project *project); static CppCodeModelSettings settingsForProject(const Utils::FilePath &projectFile); static CppCodeModelSettings settingsForFile(const Utils::FilePath &file); - static void setGlobalData(const Data &data); // TODO: Make inaccessible. - void setData(const Data &data) { m_data = data; } - Data data() const { return m_data; } + static void setGlobal(const CppCodeModelSettings &settings); // TODO: Make inaccessible. - PCHUsage pchUsage() const { return m_data.pchUsage; } - static PCHUsage pchUsage(const ProjectExplorer::Project *project); + static PCHUsage pchUsageForProject(const ProjectExplorer::Project *project); UsePrecompiledHeaders usePrecompiledHeaders() const; static UsePrecompiledHeaders usePrecompiledHeaders(const ProjectExplorer::Project *project); - bool interpretAmbigiousHeadersAsC() const { return m_data.interpretAmbigiousHeadersAsC; } - bool skipIndexingBigFiles() const { return m_data.skipIndexingBigFiles; } - bool useBuiltinPreprocessor() const { return m_data.useBuiltinPreprocessor; } - int indexerFileSizeLimitInMb() const { return m_data.indexerFileSizeLimitInMb; } int effectiveIndexerFileSizeLimitInMb() const; - bool ignoreFiles() const { return m_data.ignoreFiles; } - QString ignorePattern() const { return m_data.ignorePattern; } static bool categorizeFindReferences(); static void setCategorizeFindReferences(bool categorize); -signals: - void changed(ProjectExplorer::Project *project); + QString ignorePattern; + PCHUsage pchUsage = PchUse_BuildSystem; + int indexerFileSizeLimitInMb = 5; + bool interpretAmbigiousHeadersAsC = false; + bool skipIndexingBigFiles = true; + bool useBuiltinPreprocessor = true; + bool ignoreFiles = false; + bool m_categorizeFindReferences = false; // Ephemeral! private: - CppCodeModelSettings() = default; CppCodeModelSettings(Utils::QtcSettings *s) { fromSettings(s); } void toSettings(Utils::QtcSettings *s); void fromSettings(Utils::QtcSettings *s); - - Data m_data; }; class CppCodeModelProjectSettings @@ -94,8 +74,8 @@ class CppCodeModelProjectSettings public: CppCodeModelProjectSettings(ProjectExplorer::Project *project); - CppCodeModelSettings::Data data() const; - void setData(const CppCodeModelSettings::Data &data); + CppCodeModelSettings settings() const; + void setSettings(const CppCodeModelSettings &settings); bool useGlobalSettings() const { return m_useGlobalSettings; } void setUseGlobalSettings(bool useGlobal); @@ -104,7 +84,7 @@ private: void saveSettings(); ProjectExplorer::Project * const m_project; - CppCodeModelSettings::Data m_customSettings; + CppCodeModelSettings m_customSettings; bool m_useGlobalSettings = true; }; diff --git a/src/plugins/cppeditor/cppeditorplugin.cpp b/src/plugins/cppeditor/cppeditorplugin.cpp index 96a476c5234..6718d4cbc85 100644 --- a/src/plugins/cppeditor/cppeditorplugin.cpp +++ b/src/plugins/cppeditor/cppeditorplugin.cpp @@ -204,7 +204,7 @@ void CppEditorPlugin::initialize() setupCppQuickFixSettings(); setupCppCodeModelSettingsPage(); provideCppSettingsRetriever([](const Project *p) { - return CppCodeModelSettings::settingsForProject(p).data().toMap(); + return CppCodeModelSettings::settingsForProject(p).toMap(); }); setupCppOutline(); setupCppCodeStyleSettings(); diff --git a/src/plugins/cppeditor/cppmodelmanager.cpp b/src/plugins/cppeditor/cppmodelmanager.cpp index d5d6842e00f..4a2d4778b9a 100644 --- a/src/plugins/cppeditor/cppmodelmanager.cpp +++ b/src/plugins/cppeditor/cppmodelmanager.cpp @@ -407,7 +407,7 @@ void CppModelManager::showPreprocessedFile(bool inNextSplit) saveAndOpen(outFilePath, content.append(preprocessedDoc->utf8Source()), inNextSplit); }; - if (CppCodeModelSettings::settingsForFile(filePath).useBuiltinPreprocessor()) { + if (CppCodeModelSettings::settingsForFile(filePath).useBuiltinPreprocessor) { useBuiltinPreprocessor(); return; } @@ -1023,9 +1023,6 @@ CppModelManager::CppModelManager() connect(ICore::instance(), &ICore::coreAboutToClose, this, &CppModelManager::onCoreAboutToClose); - connect(&CppCodeModelSettings::globalInstance(), &CppCodeModelSettings::changed, - this, &CppModelManager::onSettingsChange); - d->m_fallbackProjectPartTimer.setSingleShot(true); d->m_fallbackProjectPartTimer.setInterval(5000); connect(&d->m_fallbackProjectPartTimer, &QTimer::timeout, @@ -1360,8 +1357,8 @@ QFuture<void> CppModelManager::updateSourceFiles(const QSet<FilePath> &sourceFil const CppCodeModelSettings settings = CppCodeModelSettings::settingsForProject(it.key()); filteredFiles.unite(filteredFilesRemoved(it.value(), settings.effectiveIndexerFileSizeLimitInMb(), - settings.ignoreFiles(), - settings.ignorePattern())); + settings.ignoreFiles, + settings.ignorePattern)); } return d->m_internalIndexingSupport->refreshSourceFiles(filteredFiles, mode); @@ -2013,7 +2010,7 @@ void CppModelManager::onCoreAboutToClose() d->m_enableGC = false; } -void CppModelManager::onSettingsChange(Project *project) +void CppModelManager::handleSettingsChange(Project *project) { ProjectInfoList info; if (project) @@ -2023,7 +2020,7 @@ void CppModelManager::onSettingsChange(Project *project) for (const ProjectInfo::ConstPtr &pi : std::as_const(info)) { const CppCodeModelSettings newSettings = CppCodeModelSettings::settingsForProject( pi->projectFilePath()); - if (pi->settings().data() != newSettings.data()) + if (pi->settings() != newSettings) updateProjectInfo(ProjectInfo::cloneWithNewSettings(pi, newSettings)); } } diff --git a/src/plugins/cppeditor/cppmodelmanager.h b/src/plugins/cppeditor/cppmodelmanager.h index d1a558ce9c9..c22a8a9da0b 100644 --- a/src/plugins/cppeditor/cppmodelmanager.h +++ b/src/plugins/cppeditor/cppmodelmanager.h @@ -110,6 +110,8 @@ public: static QFuture<void> updateProjectInfo(const ProjectInfo::ConstPtr &newProjectInfo, const QSet<Utils::FilePath> &additionalFiles = {}); + static void handleSettingsChange(ProjectExplorer::Project *project); + /// \return The project part with the given project file static ProjectPart::ConstPtr projectPartForId(const QString &projectPartId); /// \return All project parts that mention the given file name as one of the sources/headers. @@ -288,7 +290,6 @@ private: static void onSourceFilesRefreshed(); static void onCurrentEditorChanged(Core::IEditor *editor); static void onCoreAboutToClose(); - static void onSettingsChange(ProjectExplorer::Project *project); static void setupFallbackProjectPart(); static void delayedGC(); diff --git a/src/plugins/cppeditor/cppmodelmanager_test.cpp b/src/plugins/cppeditor/cppmodelmanager_test.cpp index 4ac39de737a..dd0f07d80b2 100644 --- a/src/plugins/cppeditor/cppmodelmanager_test.cpp +++ b/src/plugins/cppeditor/cppmodelmanager_test.cpp @@ -1283,10 +1283,9 @@ void ModelManagerTest::testSettingsChanges() // Change global settings. Only the second project should get re-indexed, as the first one // has its own settings, which are still the same. - CppCodeModelSettings::Data globalSettings - = CppCodeModelSettings::settingsForProject(nullptr).data(); + CppCodeModelSettings globalSettings = CppCodeModelSettings::settingsForProject(nullptr); globalSettings.indexerFileSizeLimitInMb = 1; - CppCodeModelSettings::setGlobalData(globalSettings); + CppCodeModelSettings::setGlobal(globalSettings); if (refreshCount == 0) QVERIFY(waitForRefresh()); QVERIFY(!waitForRefresh()); @@ -1295,10 +1294,10 @@ void ModelManagerTest::testSettingsChanges() // Change first project's settings. Only this project should get re-indexed. refreshCount = 0; refreshedFiles.clear(); - CppCodeModelSettings::Data p1Data = p1Settings.data(); + CppCodeModelSettings p1Data = p1Settings.settings(); p1Data.ignoreFiles = true; p1Data.ignorePattern = "baz3.h"; - p1Settings.setData(p1Data); + p1Settings.setSettings(p1Data); if (refreshCount == 0) QVERIFY(waitForRefresh()); QVERIFY(!waitForRefresh()); diff --git a/src/plugins/cppeditor/projectinfo.cpp b/src/plugins/cppeditor/projectinfo.cpp index 8a393df6d35..9561310f323 100644 --- a/src/plugins/cppeditor/projectinfo.cpp +++ b/src/plugins/cppeditor/projectinfo.cpp @@ -33,7 +33,7 @@ bool ProjectInfo::operator ==(const ProjectInfo &other) const && m_projectParts == other.m_projectParts && m_headerPaths == other.m_headerPaths && m_sourceFiles == other.m_sourceFiles - && m_settings.data() == other.m_settings.data() + && m_settings == other.m_settings && m_defines == other.m_defines; } @@ -50,7 +50,7 @@ bool ProjectInfo::definesChanged(const ProjectInfo &other) const bool ProjectInfo::configurationChanged(const ProjectInfo &other) const { return definesChanged(other) || m_headerPaths != other.m_headerPaths - || m_settings.data() != other.settings().data(); + || m_settings != other.settings(); } bool ProjectInfo::configurationOrFilesChanged(const ProjectInfo &other) const @@ -98,7 +98,7 @@ ProjectInfo::ProjectInfo(const ProjectExplorer::ProjectUpdateInfo &updateInfo, m_headerPaths(getHeaderPaths(projectParts)), m_sourceFiles(getSourceFiles(projectParts)), m_defines(getDefines(projectParts)), - m_settings(CppCodeModelSettings::Data(updateInfo.cppSettings)) + m_settings(updateInfo.cppSettings) { } @@ -110,7 +110,7 @@ ProjectInfo::ProjectInfo(const ConstPtr &pi, const CppCodeModelSettings &setting m_headerPaths(pi->m_headerPaths), m_sourceFiles(pi->sourceFiles()), m_defines(pi->m_defines), - m_settings(settings.data()) + m_settings(settings) { } |