Merge pull request #13259 from TryTwo/PR_Config_signals

Qt: Fix some options not changing enabled status on game start.
This commit is contained in:
JMC47 2025-01-18 18:11:04 -05:00 committed by GitHub
commit 8e9596e221
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 14 additions and 4 deletions

View File

@ -63,7 +63,6 @@ void ConfigStringChoice::Load()
const int index = m_text_is_data ? findText(setting_value) : findData(setting_value);
// This can be called publicly.
const QSignalBlocker block(this);
setCurrentIndex(index);
}
@ -145,6 +144,7 @@ void ConfigComplexChoice::UpdateComboIndex()
auto it = std::find(m_options.begin(), m_options.end(), values);
int index = static_cast<int>(std::distance(m_options.begin(), it));
// Will crash if not blocked
const QSignalBlocker blocker(this);
setCurrentIndex(index);
}

View File

@ -5,7 +5,6 @@
#include <QFont>
#include <QMouseEvent>
#include <QSignalBlocker>
#include "Common/Config/Enums.h"
#include "Common/Config/Layer.h"
@ -49,14 +48,21 @@ protected:
bf.setBold(IsConfigLocal());
Derived::setFont(bf);
const QSignalBlocker blocker(this);
// This isn't signal blocked because the UI may need to be updated.
m_updating = true;
OnConfigChanged();
m_updating = false;
});
}
template <typename T>
void SaveValue(const Config::Info<T>& setting, const T& value)
{
// Avoid OnConfigChanged -> option changed to current config's value -> unnecessary save ->
// ConfigChanged.
if (m_updating)
return;
if (m_layer != nullptr)
{
m_layer->Set(m_location, value);
@ -100,6 +106,7 @@ private:
}
}
bool m_updating = false;
const Config::Location m_location;
Config::Layer* m_layer;
};

View File

@ -232,7 +232,10 @@ void GeneralWidget::OnEmulationStateChanged(bool running)
std::string current_backend = m_backend_combo->currentData().toString().toStdString();
if (Config::Get(Config::MAIN_GFX_BACKEND) != current_backend)
{
m_backend_combo->Load();
{
const QSignalBlocker blocker(m_backend_combo);
m_backend_combo->Load();
}
emit BackendChanged(QString::fromStdString(Config::Get(Config::MAIN_GFX_BACKEND)));
}
}