diff --git a/apps/launcher/maindialog.cpp b/apps/launcher/maindialog.cpp index fb1b73c3e..a979a2125 100644 --- a/apps/launcher/maindialog.cpp +++ b/apps/launcher/maindialog.cpp @@ -384,6 +384,9 @@ bool Launcher::MainDialog::setupGraphicsSettings() // remain consistent, and possibly be merged into a shared component. At the very least // the filenames should be in the CfgMgr component. + // Ensure to clear previous settings in case we had already loaded settings. + mEngineSettings.clear(); + // Create the settings manager and load default settings file const std::string localDefault = (mCfgMgr.getLocalPath() / "settings-default.cfg").string(); const std::string globalDefault = (mCfgMgr.getGlobalPath() / "settings-default.cfg").string(); diff --git a/components/settings/settings.cpp b/components/settings/settings.cpp index acad1a98e..0e5324bd9 100644 --- a/components/settings/settings.cpp +++ b/components/settings/settings.cpp @@ -353,6 +353,13 @@ private: int mLine; }; +void Manager::clear() +{ + mDefaultSettings.clear(); + mUserSettings.clear(); + mChangedSettings.clear(); +} + void Manager::loadDefault(const std::string &file) { SettingsFileParser parser; diff --git a/components/settings/settings.hpp b/components/settings/settings.hpp index c16ff5a1e..7adcb9b39 100644 --- a/components/settings/settings.hpp +++ b/components/settings/settings.hpp @@ -23,6 +23,9 @@ namespace Settings static CategorySettingVector mChangedSettings; ///< tracks all the settings that were changed since the last apply() call + void clear(); + ///< clears all settings and default settings + void loadDefault (const std::string& file); ///< load file as the default settings (can be overridden by user settings)