From 0baecf3fa765f985b33ffa75c3b2b4edadb37ef0 Mon Sep 17 00:00:00 2001 From: ElCruncharino <59633028+ElCruncharino@users.noreply.github.com> Date: Wed, 2 Sep 2026 18:24:37 -0400 Subject: [PATCH] fix: clear settings should wipe the state file too --- src/lib/common/Settings.cpp | 6 ++++++ src/lib/common/Settings.h | 1 + src/lib/gui/Diagnostic.cpp | 4 +--- src/unittests/common/SettingsTests.cpp | 10 ++++++++++ src/unittests/common/SettingsTests.h | 1 + 5 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/lib/common/Settings.cpp b/src/lib/common/Settings.cpp index 889eaa0b3..b451b2f87 100644 --- a/src/lib/common/Settings.cpp +++ b/src/lib/common/Settings.cpp @@ -60,6 +60,12 @@ void Settings::setStateFile(const QString &stateFile) qInfo().noquote() << "state file changed:" << instance()->m_stateSettings->fileName(); } +void Settings::clearState() +{ + instance()->m_stateSettings->clear(); + instance()->m_stateSettings->sync(); +} + Settings::Settings(QObject *parent) : QObject(parent), m_settingsWatcher{new QFileSystemWatcher(this)} { QString fileToLoad; diff --git a/src/lib/common/Settings.h b/src/lib/common/Settings.h index ede0e1648..d373c46cb 100644 --- a/src/lib/common/Settings.h +++ b/src/lib/common/Settings.h @@ -175,6 +175,7 @@ public: static Settings *instance(); static void setSettingsFile(const QString &settingsFile = QString()); static void setStateFile(const QString &stateFile = QString()); + static void clearState(); static void setValue(const QString &key = QString(), const QVariant &value = QVariant()); static QVariant value(const QString &key = QString()); static void restoreDefaultSettings(); diff --git a/src/lib/gui/Diagnostic.cpp b/src/lib/gui/Diagnostic.cpp index 5781f427b..034548877 100644 --- a/src/lib/gui/Diagnostic.cpp +++ b/src/lib/gui/Diagnostic.cpp @@ -34,9 +34,7 @@ void clearSettings(bool enableRestart) { qDebug("clearing settings"); Settings::proxy().clear(); - - // Reset the windowGeometry - Settings::setValue(Settings::Gui::WindowGeometry); + Settings::clearState(); // save but do not emit saving signal which will prevent the current state of // the app config and server configs from being applied. diff --git a/src/unittests/common/SettingsTests.cpp b/src/unittests/common/SettingsTests.cpp index 07fca577b..b7db911f3 100644 --- a/src/unittests/common/SettingsTests.cpp +++ b/src/unittests/common/SettingsTests.cpp @@ -101,4 +101,14 @@ void SettingsTests::checkCleanScreenName_LongName() QCOMPARE(Settings::value(Settings::Core::ComputerName).toString(), expected); } +void SettingsTests::checkClearState() +{ + Settings::setValue(Settings::Gui::WindowGeometry, QRect(1, 2, 3, 4)); + QVERIFY(Settings::value(Settings::Gui::WindowGeometry).toRect().isValid()); + + Settings::clearState(); + + QVERIFY(!Settings::value(Settings::Gui::WindowGeometry).toRect().isValid()); +} + QTEST_MAIN(SettingsTests) diff --git a/src/unittests/common/SettingsTests.h b/src/unittests/common/SettingsTests.h index 17384bd6d..6bdfb997e 100644 --- a/src/unittests/common/SettingsTests.h +++ b/src/unittests/common/SettingsTests.h @@ -24,6 +24,7 @@ private Q_SLOTS: void checkValidSettings(); void checkCleanScreenName(); void checkCleanScreenName_LongName(); + void checkClearState(); private: inline static const QString m_settingsPathTemp = QStringLiteral("tmp/test");