diff --git a/src/lib/gui/dialogs/SettingsDialog.cpp b/src/lib/gui/dialogs/SettingsDialog.cpp index a5bae7de1..0ec5ab36a 100644 --- a/src/lib/gui/dialogs/SettingsDialog.cpp +++ b/src/lib/gui/dialogs/SettingsDialog.cpp @@ -264,10 +264,15 @@ void SettingsDialog::loadFromConfig() ui->lblDebugWarning->setVisible(Settings::value(Settings::Log::Level).toInt() > 4); ui->comboInterface->setCurrentText(Settings::value(Settings::Core::Interface).toString()); - if (ui->comboInterface->currentIndex() < 0) + if (ui->comboInterface->currentIndex() <= 0) { ui->comboInterface->setCurrentIndex(0); + m_interfaceSetOnLoad = false; + } else { + m_interfaceSetOnLoad = true; + } qDebug() << "load from config done"; + updateControls(); } @@ -381,9 +386,9 @@ void SettingsDialog::logLevelChanged() bool SettingsDialog::isModified() const { const auto processMode = Settings::value(Settings::Core::ProcessMode).value(); - const auto interfaceSet = ui->comboInterface->currentIndex(); + const bool ignoreInterface = !m_interfaceSetOnLoad && (ui->comboInterface->currentIndex() == 0); - return ( + bool modified = (ui->sbPort->value() != Settings::value(Settings::Core::Port).toInt()) || (ui->comboLogLevel->currentIndex() != Settings::value(Settings::Log::Level).toInt()) || (ui->groupLogToFile->isChecked() != Settings::value(Settings::Log::ToFile).toBool()) || @@ -398,13 +403,15 @@ bool SettingsDialog::isModified() const (ui->cbShowVersion->isChecked() != Settings::value(Settings::Gui::ShowVersionInTitle).toBool()) || (ui->rbIconMono->isChecked() != Settings::value(Settings::Gui::SymbolicTrayIcon).toBool()) || (ui->groupService->isChecked() != (processMode == Settings::ProcessMode::Service)) || - ((ui->comboInterface->currentText() != Settings::value(Settings::Core::Interface).toString()) && interfaceSet) || (ui->lineTlsCertPath->text() != Settings::value(Settings::Security::Certificate).toString()) || (ui->comboTlsKeyLength->currentText() != Settings::value(Settings::Security::KeySize).toString()) || (ui->groupSecurity->isChecked() != Settings::value(Settings::Security::TlsEnabled).toBool()) || (ui->cbRequireClientCert->isChecked() != Settings::value(Settings::Security::CheckPeers).toBool()) || - (I18N::nativeTo639Name(ui->comboLanguage->currentText()) != Settings::value(Settings::Core::Language).toString()) - ); + (I18N::nativeTo639Name(ui->comboLanguage->currentText()) != Settings::value(Settings::Core::Language).toString()); + + if (!ignoreInterface) + modified = modified || ui->comboInterface->currentText() != Settings::value(Settings::Core::Interface).toString(); + return modified; } bool SettingsDialog::isDefault() const diff --git a/src/lib/gui/dialogs/SettingsDialog.h b/src/lib/gui/dialogs/SettingsDialog.h index 5d8c2454b..a20bb6ea2 100644 --- a/src/lib/gui/dialogs/SettingsDialog.h +++ b/src/lib/gui/dialogs/SettingsDialog.h @@ -84,6 +84,7 @@ private: */ void setButtonBoxEnabledButtons() const; + bool m_interfaceSetOnLoad = false; std::unique_ptr ui; const IServerConfig &m_serverConfig; };