CppEditor: Simplify CppCodeModelSettings

We don't need the QObject wrapper.

Change-Id: Ief0e1314db40cb403c56fe0e660c5dffa326f83c
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
Christian Kandeler
2024-04-12 12:30:30 +02:00
parent d51128fb8a
commit ac4bf6901b
10 changed files with 103 additions and 125 deletions

View File

@@ -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>;

View File

@@ -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(),

View File

@@ -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(

View File

@@ -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:

View File

@@ -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);
return !(s1 == s2);
}
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;
};
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;
};

View File

@@ -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();

View File

@@ -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));
}
}

View File

@@ -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();

View File

@@ -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());

View File

@@ -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)
{
}