diff --git a/src/lib/common/Settings.cpp b/src/lib/common/Settings.cpp index 3a9e2b47b..340106b3d 100644 --- a/src/lib/common/Settings.cpp +++ b/src/lib/common/Settings.cpp @@ -352,3 +352,13 @@ QString Settings::portableSettingsFile() QStringLiteral("%1/settings/%2.conf").arg(QCoreApplication::applicationDirPath(), kAppName); return QFileInfo(filename).absoluteFilePath(); } + +void Settings::removeUnknownScreens(const QStringList &knownScreens) +{ + const QStringList knownGroups = instance()->m_settings->childGroups(); + for (const auto &group : knownGroups) { + if (m_validGroup.contains(group) || knownScreens.contains(group)) + continue; + instance()->m_settings->remove(group); + } +} diff --git a/src/lib/common/Settings.h b/src/lib/common/Settings.h index 7e9a15581..0784d0d79 100644 --- a/src/lib/common/Settings.h +++ b/src/lib/common/Settings.h @@ -173,6 +173,7 @@ public: static QStringList validKeys(); static QStringList validGroups(); static QString portableSettingsFile(); + static void removeUnknownScreens(const QStringList &knownScreens); Q_SIGNALS: void settingsChanged(const QString key); diff --git a/src/lib/gui/dialogs/ServerConfigDialog.cpp b/src/lib/gui/dialogs/ServerConfigDialog.cpp index c06264e66..d7815660b 100644 --- a/src/lib/gui/dialogs/ServerConfigDialog.cpp +++ b/src/lib/gui/dialogs/ServerConfigDialog.cpp @@ -89,6 +89,16 @@ void ServerConfigDialog::accept() Settings::setValue(Settings::Server::RelativeMouseMoves, m_relativeMouseMoves); Settings::setValue(Settings::Server::Win32KeepForeground, m_win32keepForeground); + QStringList screenNames; + const auto screenList = m_screenSetupModel.m_Screens; + for (const auto &screen : screenList) { + const auto &screenName = screen.name(); + if (screenName.isEmpty()) + continue; + screenNames.append(QStringLiteral("screen_%1").arg(screenName)); + Settings::setValue(Settings::Screen::Aliases.arg(screenName), screen.aliases()); + } + Settings::removeUnknownScreens(screenNames); QDialog::accept(); }