diff options
| author | Léo Lam <leolino.lam@gmail.com> | 2018-04-05 17:44:30 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-04-05 17:44:30 +0200 |
| commit | 4cd5ef76adfb863e59252c21e8812adeaae42b33 (patch) | |
| tree | 4cae8d17d190f6a563a6dae457ffe8f4a872369d /Source/Core/DolphinQt2/Config/Mapping/MappingButton.cpp | |
| parent | a66c7d6a64865c3b0fe4b1981f91f2d4b9699e93 (diff) | |
| parent | e0ba2a4aebc47e00ccc78c630ea89d2172ed51e7 (diff) | |
Merge pull request #6537 from spycrab/qt_quick_assign
Qt/Mapping: Implement "Iterative Input"
Diffstat (limited to 'Source/Core/DolphinQt2/Config/Mapping/MappingButton.cpp')
| -rw-r--r-- | Source/Core/DolphinQt2/Config/Mapping/MappingButton.cpp | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/Source/Core/DolphinQt2/Config/Mapping/MappingButton.cpp b/Source/Core/DolphinQt2/Config/Mapping/MappingButton.cpp index 934cbde7e8..4598099c89 100644 --- a/Source/Core/DolphinQt2/Config/Mapping/MappingButton.cpp +++ b/Source/Core/DolphinQt2/Config/Mapping/MappingButton.cpp @@ -28,6 +28,11 @@ static QString EscapeAmpersand(QString&& string) return string.replace(QStringLiteral("&"), QStringLiteral("&&")); } +bool MappingButton::IsInput() const +{ + return m_reference->IsInput(); +} + MappingButton::MappingButton(MappingWidget* widget, ControlReference* ref, bool indicator) : ElidedButton(EscapeAmpersand(QString::fromStdString(ref->GetExpression()))), m_parent(widget), m_reference(ref) @@ -71,10 +76,10 @@ MappingButton::MappingButton(MappingWidget* widget, ControlReference* ref, bool void MappingButton::Connect() { - connect(this, &MappingButton::clicked, this, &MappingButton::OnButtonPressed); + connect(this, &MappingButton::pressed, this, &MappingButton::Detect); } -void MappingButton::OnButtonPressed() +void MappingButton::Detect() { if (m_parent->GetDevice() == nullptr || !m_reference->IsInput()) return; @@ -84,7 +89,7 @@ void MappingButton::OnButtonPressed() grabMouse(); // Make sure that we don't block event handling - std::thread([this] { + std::thread thread([this] { const auto dev = m_parent->GetDevice(); setText(QStringLiteral("...")); @@ -104,12 +109,17 @@ void MappingButton::OnButtonPressed() m_reference->SetExpression(expr.toStdString()); m_parent->SaveSettings(); Update(); + + if (m_parent->IsIterativeInput()) + m_parent->NextButton(this); } else { OnButtonTimeout(); } - }).detach(); + }); + + thread.detach(); } void MappingButton::OnButtonTimeout() |
