From 55b678972838bddcc64e3e99e3661600cf764d75 Mon Sep 17 00:00:00 2001 From: sithlord48 Date: Sat, 20 Jun 2026 12:15:46 -0400 Subject: [PATCH] refactor: save aliases without restarting the core. remove unknown screens when saving the server config --- src/lib/common/Settings.cpp | 10 ++++++++++ src/lib/common/Settings.h | 1 + src/lib/gui/dialogs/ServerConfigDialog.cpp | 10 ++++++++++ 3 files changed, 21 insertions(+) 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(); }