From aaa08da6f8aa6abe9c0d878a60f4235639b2ea8f Mon Sep 17 00:00:00 2001 From: sithlord48 Date: Fri, 14 Aug 2026 23:54:01 -0400 Subject: [PATCH] fix(ServerConfigDialog): adjust external file line so it saves when edited via typed entry --- src/lib/gui/dialogs/ServerConfigDialog.cpp | 22 ++++++++++++++++------ src/lib/gui/dialogs/ServerConfigDialog.h | 1 + 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/lib/gui/dialogs/ServerConfigDialog.cpp b/src/lib/gui/dialogs/ServerConfigDialog.cpp index f1ba95edd..cf834713e 100644 --- a/src/lib/gui/dialogs/ServerConfigDialog.cpp +++ b/src/lib/gui/dialogs/ServerConfigDialog.cpp @@ -41,7 +41,6 @@ ServerConfigDialog::ServerConfigDialog(QWidget *parent, ServerConfig &config) m_buttonBox->enableRestoreDefaults(false); - setOriginalServerConfig(serverConfig()); loadFromConfig(); ui->lblRemoveScreen->setPixmap(QIcon::fromTheme("user-trash").pixmap(QSize(64, 64))); @@ -52,7 +51,7 @@ ServerConfigDialog::ServerConfigDialog(QWidget *parent, ServerConfig &config) if (!deskflow::platform::isWindows()) ui->cbWin32KeepForeground->setVisible(false); initConnections(); - setButtonBoxEnabledButtons(); + updateControls(); } ServerConfigDialog::~ServerConfigDialog() = default; @@ -74,7 +73,6 @@ void ServerConfigDialog::save() return; } } - // now that the dialog has been accepted, copy the new server config to the // original one, which is a reference to the one in MainWindow. setOriginalServerConfig(serverConfig()); @@ -91,6 +89,8 @@ void ServerConfigDialog::save() Settings::setValue(Settings::Server::SwitchDoubleTap, m_switchDoubleTap); Settings::setValue(Settings::Server::RelativeMouseMoves, m_relativeMouseMoves); Settings::setValue(Settings::Server::Win32KeepForeground, m_win32keepForeground); + Settings::setValue(Settings::Server::ExternalConfig, ui->groupExternalConfig->isChecked()); + Settings::setValue(Settings::Server::ExternalConfigFile, ui->lineConfigFile->text()); QStringList screenNames; const auto screenList = m_screenSetupModel.m_Screens; @@ -109,7 +109,6 @@ void ServerConfigDialog::cancel() { serverConfig().setUseExternalConfig(m_originalServerConfigIsExternal); serverConfig().setConfigFile(m_originalServerConfigUsesExternalFile); - QDialog::reject(); } @@ -375,8 +374,7 @@ bool ServerConfigDialog::browseConfigFile() if (!fileName.isEmpty()) { ui->lineConfigFile->setText(fileName); - serverConfig().setConfigFile(ui->lineConfigFile->text()); - setButtonBoxEnabledButtons(); + setServerConfig(); return true; } @@ -508,6 +506,7 @@ void ServerConfigDialog::initConnections() const connect(ui->cbEnableClipboard, &QCheckBox::toggled, this, &ServerConfigDialog::toggleClipboard); connect(ui->btnBrowseConfigFile, &QPushButton::clicked, this, &ServerConfigDialog::browseConfigFile); connect(ui->groupExternalConfig, &QGroupBox::toggled, this, &ServerConfigDialog::toggleExternalConfig); + connect(ui->lineConfigFile, &QLineEdit::textChanged, this, &ServerConfigDialog::setServerConfig); connect( ui->sbClipboardSizeLimit, QOverload::of(&QSpinBox::valueChanged), this, @@ -543,6 +542,17 @@ void ServerConfigDialog::updateControls() const setButtonBoxEnabledButtons(); } +void ServerConfigDialog::setServerConfig() +{ + const auto configFile = ui->lineConfigFile->text(); + if (!QFile::exists(configFile)) { + m_buttonBox->enableSave(false); + return; + } + serverConfig().setConfigFile(configFile); + setButtonBoxEnabledButtons(); +} + bool ServerConfigDialog::addComputer(const QString &clientName, bool doSilent) { bool isAccepted = false; diff --git a/src/lib/gui/dialogs/ServerConfigDialog.h b/src/lib/gui/dialogs/ServerConfigDialog.h index 575fbf64d..a56152947 100644 --- a/src/lib/gui/dialogs/ServerConfigDialog.h +++ b/src/lib/gui/dialogs/ServerConfigDialog.h @@ -91,6 +91,7 @@ private: void resetFromSettings(); void initConnections() const; void updateControls() const; + void setServerConfig(); bool isGeneralConfigModified() const; void setButtonBoxEnabledButtons() const; std::unique_ptr ui;