summaryrefslogtreecommitdiff
path: root/Source/Core/DolphinQt2/Config/Mapping/MappingButton.cpp
diff options
context:
space:
mode:
authorLéo Lam <leolino.lam@gmail.com>2018-04-05 17:44:30 +0200
committerGitHub <noreply@github.com>2018-04-05 17:44:30 +0200
commit4cd5ef76adfb863e59252c21e8812adeaae42b33 (patch)
tree4cae8d17d190f6a563a6dae457ffe8f4a872369d /Source/Core/DolphinQt2/Config/Mapping/MappingButton.cpp
parenta66c7d6a64865c3b0fe4b1981f91f2d4b9699e93 (diff)
parente0ba2a4aebc47e00ccc78c630ea89d2172ed51e7 (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.cpp18
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()