mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-04-13 09:51:31 +02:00
ConfigControl fix: Add invalid index check to ConfigComplexChoice. Resolve with a default index that can be set.
If more control is needed, it could be changed to allow multiple states to point to the same index.
This commit is contained in:
parent
896b4bb1fa
commit
e5608c6ca5
@ -153,13 +153,23 @@ void ConfigComplexChoice::UpdateComboIndex()
|
||||
};
|
||||
|
||||
auto it = std::find_if(m_options.begin(), m_options.end(), is_correct_option);
|
||||
int index = static_cast<int>(std::distance(m_options.begin(), it));
|
||||
int index;
|
||||
|
||||
if (it == m_options.end())
|
||||
index = m_default_index;
|
||||
else
|
||||
index = static_cast<int>(std::distance(m_options.begin(), it));
|
||||
|
||||
// Will crash if not blocked
|
||||
const QSignalBlocker blocker(this);
|
||||
setCurrentIndex(index);
|
||||
}
|
||||
|
||||
void ConfigComplexChoice::SetDefault(int index)
|
||||
{
|
||||
m_default_index = index;
|
||||
}
|
||||
|
||||
const std::pair<Config::Location, Config::Location> ConfigComplexChoice::GetLocation() const
|
||||
{
|
||||
auto visit = [](auto& v) { return v.GetLocation(); };
|
||||
|
@ -62,6 +62,7 @@ public:
|
||||
void Add(const QString& name, const OptionVariant option1, const OptionVariant option2);
|
||||
void Refresh();
|
||||
void Reset();
|
||||
void SetDefault(int index);
|
||||
const std::pair<Config::Location, Config::Location> GetLocation() const;
|
||||
|
||||
private:
|
||||
@ -73,4 +74,5 @@ private:
|
||||
const InfoVariant m_setting1;
|
||||
const InfoVariant m_setting2;
|
||||
std::vector<std::pair<OptionVariant, OptionVariant>> m_options;
|
||||
int m_default_index = -1;
|
||||
};
|
||||
|
@ -54,10 +54,9 @@ void AudioPane::CreateWidgets()
|
||||
m_dsp_combo->Add(tr("HLE (recommended)"), true, true);
|
||||
m_dsp_combo->Add(tr("LLE Recompiler (slow)"), false, true);
|
||||
m_dsp_combo->Add(tr("LLE Interpreter (very slow)"), false, false);
|
||||
// The state true/false shouldn't normally happen, but is HLE (index 0) when it does.
|
||||
m_dsp_combo->SetDefault(0);
|
||||
m_dsp_combo->Refresh();
|
||||
// The state true/false shouldn't normally happen and forces no option to be selected.
|
||||
if (m_dsp_combo->currentIndex() == -1)
|
||||
m_dsp_combo->setCurrentIndex(0);
|
||||
|
||||
dsp_layout->addWidget(dsp_combo_label);
|
||||
dsp_layout->addWidget(m_dsp_combo, Qt::AlignLeft);
|
||||
|
Loading…
x
Reference in New Issue
Block a user