diff options
| author | Jordan Woyak <jordan.woyak@gmail.com> | 2020-01-26 13:58:20 -0600 |
|---|---|---|
| committer | Jordan Woyak <jordan.woyak@gmail.com> | 2020-09-25 20:29:18 -0500 |
| commit | d8ad8c386121e9c937360b102289231d86693dd1 (patch) | |
| tree | 9dffa8c6a38dd3b1de31d0236b35f76011b2664d /Source/Core/InputCommon/ControlReference/ExpressionParser.cpp | |
| parent | aae913fbc6da714b3777e3a3c20fd06d1e423a0e (diff) | |
InputCommon: Make hotkeys and input detection aware of Ctrl -> L_Ctrl / R_Ctrl hierarchy.
Diffstat (limited to 'Source/Core/InputCommon/ControlReference/ExpressionParser.cpp')
| -rw-r--r-- | Source/Core/InputCommon/ControlReference/ExpressionParser.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/Source/Core/InputCommon/ControlReference/ExpressionParser.cpp b/Source/Core/InputCommon/ControlReference/ExpressionParser.cpp index 9e36c49a05..cbc4a1462b 100644 --- a/Source/Core/InputCommon/ControlReference/ExpressionParser.cpp +++ b/Source/Core/InputCommon/ControlReference/ExpressionParser.cpp @@ -291,9 +291,14 @@ bool HotkeySuppressions::IsSuppressedIgnoringModifiers(Device::Input* input, auto it = m_suppressions.lower_bound({input, nullptr}); auto it_end = m_suppressions.lower_bound({input + 1, nullptr}); + // We need to ignore L_Ctrl R_Ctrl when supplied Ctrl and vice-versa. + const auto is_same_modifier = [](Device::Input* i1, Device::Input* i2) { + return i1 == i2 || i1->IsChild(i2) || i2->IsChild(i1); + }; + return std::any_of(it, it_end, [&](auto& s) { return std::none_of(begin(ignore_modifiers), end(ignore_modifiers), - [&](auto& m) { return m->GetInput() == s.first.second; }); + [&](auto& m) { return is_same_modifier(m->GetInput(), s.first.second); }); }); } |
