From 4c02bc497c6b1981f3853669c60fbbd078c89dc3 Mon Sep 17 00:00:00 2001 From: hjk Date: Wed, 12 Jul 2023 13:35:15 +0200 Subject: [PATCH] Core: Add some sanity check that settings containers don't auto-apply We use manual 'Apply' in the dialog. Also, mark a few pages as non-autoapply that were recently changed away from PagedSettings again which did that autmatically. Change-Id: Id78cac2770658b18c420813802a0e77443329f39 Reviewed-by: Christian Stenger --- src/plugins/autotest/ctest/ctesttool.cpp | 1 + src/plugins/beautifier/beautifiertool.cpp | 1 + src/plugins/coreplugin/dialogs/ioptionspage.cpp | 7 +++++++ src/plugins/fakevim/fakevimactions.cpp | 2 ++ src/plugins/terminal/terminalsettings.cpp | 1 + src/plugins/vcpkg/vcpkgsettings.cpp | 1 + 6 files changed, 13 insertions(+) diff --git a/src/plugins/autotest/ctest/ctesttool.cpp b/src/plugins/autotest/ctest/ctesttool.cpp index 766e9cc1ffd..8933cc093ec 100644 --- a/src/plugins/autotest/ctest/ctesttool.cpp +++ b/src/plugins/autotest/ctest/ctesttool.cpp @@ -30,6 +30,7 @@ CTestTool::CTestTool() : Autotest::ITestTool(false) { setSettingsGroups("Autotest", "CTest"); + setAutoApply(false); setLayouter([this] { return Row { Form { diff --git a/src/plugins/beautifier/beautifiertool.cpp b/src/plugins/beautifier/beautifiertool.cpp index 85c70fee264..a8be6a48377 100644 --- a/src/plugins/beautifier/beautifiertool.cpp +++ b/src/plugins/beautifier/beautifiertool.cpp @@ -129,6 +129,7 @@ AbstractSettings::AbstractSettings(const QString &name, const QString &ending) .pathAppended(name)) { setSettingsGroups(Utils::Constants::BEAUTIFIER_SETTINGS_GROUP, name); + setAutoApply(false); command.setSettingsKey("command"); command.setExpectedKind(PathChooser::ExistingCommand); diff --git a/src/plugins/coreplugin/dialogs/ioptionspage.cpp b/src/plugins/coreplugin/dialogs/ioptionspage.cpp index 31bf0069b9e..a4762169000 100644 --- a/src/plugins/coreplugin/dialogs/ioptionspage.cpp +++ b/src/plugins/coreplugin/dialogs/ioptionspage.cpp @@ -164,6 +164,13 @@ void IOptionsPage::apply() if (m_settingsProvider) { AspectContainer *container = m_settingsProvider(); + QTC_ASSERT(container, return); + // Sanity check: Aspects in option pages should not autoapply. + if (!container->aspects().isEmpty()) { + BaseAspect *aspect = container->aspects().first(); + QTC_ASSERT(aspect, return); + QTC_ASSERT(!aspect->isAutoApply(), container->setAutoApply(false)); + } if (container->isDirty()) { container->apply(); container->writeSettings(); diff --git a/src/plugins/fakevim/fakevimactions.cpp b/src/plugins/fakevim/fakevimactions.cpp index c80d17c9722..77707500947 100644 --- a/src/plugins/fakevim/fakevimactions.cpp +++ b/src/plugins/fakevim/fakevimactions.cpp @@ -53,6 +53,8 @@ FakeVimSettings &settings() FakeVimSettings::FakeVimSettings() { + setAutoApply(false); + setup(&useFakeVim, false, "UseFakeVim", {}, Tr::tr("Use FakeVim")); // Specific FakeVim settings diff --git a/src/plugins/terminal/terminalsettings.cpp b/src/plugins/terminal/terminalsettings.cpp index 47811b230a7..f78173aa955 100644 --- a/src/plugins/terminal/terminalsettings.cpp +++ b/src/plugins/terminal/terminalsettings.cpp @@ -362,6 +362,7 @@ TerminalSettings &settings() TerminalSettings::TerminalSettings() { setSettingsGroup("Terminal"); + setAutoApply(false); enableTerminal.setSettingsKey("EnableTerminal"); enableTerminal.setLabelText(Tr::tr("Use internal terminal")); diff --git a/src/plugins/vcpkg/vcpkgsettings.cpp b/src/plugins/vcpkg/vcpkgsettings.cpp index 8f026c5654a..338c77df8df 100644 --- a/src/plugins/vcpkg/vcpkgsettings.cpp +++ b/src/plugins/vcpkg/vcpkgsettings.cpp @@ -31,6 +31,7 @@ VcpkgSettings &settings() VcpkgSettings::VcpkgSettings() { setSettingsGroup("Vcpkg"); + setAutoApply(false); vcpkgRoot.setSettingsKey("VcpkgRoot"); vcpkgRoot.setExpectedKind(PathChooser::ExistingDirectory);