diff --git a/Source/Core/DolphinQt/Config/ConfigControls/ConfigChoice.cpp b/Source/Core/DolphinQt/Config/ConfigControls/ConfigChoice.cpp index 760a4c0ff8..68592a1ce2 100644 --- a/Source/Core/DolphinQt/Config/ConfigControls/ConfigChoice.cpp +++ b/Source/Core/DolphinQt/Config/ConfigControls/ConfigChoice.cpp @@ -131,17 +131,28 @@ void ConfigComplexChoice::SaveValue(int choice) void ConfigComplexChoice::UpdateComboIndex() { - auto Get = [this](auto& setting) { + auto get_layer_value = [this](auto& setting) { if (m_layer != nullptr) return static_cast(m_layer->Get(setting)); return static_cast(Config::Get(setting)); }; - std::pair values = - std::make_pair(std::visit(Get, m_setting1), std::visit(Get, m_setting2)); + auto get_default_value = [](auto& setting) { return OptionVariant(setting.GetDefaultValue()); }; - auto it = std::find(m_options.begin(), m_options.end(), values); + auto is_current_value = [&](const InfoVariant& info, const OptionVariant& option) { + return std::visit(get_layer_value, info) == + (std::holds_alternative(option) ? + std::visit(get_default_value, info) : + option); + }; + + auto is_correct_option = [&](const std::pair& option) { + return is_current_value(m_setting1, option.first) && + is_current_value(m_setting2, option.second); + }; + + auto it = std::find_if(m_options.begin(), m_options.end(), is_correct_option); int index = static_cast(std::distance(m_options.begin(), it)); // Will crash if not blocked diff --git a/Source/Core/DolphinQt/Config/ConfigControls/ConfigChoice.h b/Source/Core/DolphinQt/Config/ConfigControls/ConfigChoice.h index 77fc9629fb..93ca06953f 100644 --- a/Source/Core/DolphinQt/Config/ConfigControls/ConfigChoice.h +++ b/Source/Core/DolphinQt/Config/ConfigControls/ConfigChoice.h @@ -53,7 +53,7 @@ class ConfigComplexChoice final : public ToolTipComboBox Q_OBJECT using InfoVariant = std::variant, Config::Info, Config::Info>; - using OptionVariant = std::variant; + using OptionVariant = std::variant; public: ConfigComplexChoice(const InfoVariant setting1, const InfoVariant setting2,