summaryrefslogtreecommitdiff
path: root/Source/Core/DolphinQt2/Config/Mapping/MappingButton.cpp
diff options
context:
space:
mode:
authorspycrab <spycrab@users.noreply.github.com>2018-04-01 16:25:34 +0200
committerspycrab <spycrab@users.noreply.github.com>2018-04-04 21:51:51 +0200
commite0ba2a4aebc47e00ccc78c630ea89d2172ed51e7 (patch)
tree24161ad880a1fff204309126b50568122bea75ec /Source/Core/DolphinQt2/Config/Mapping/MappingButton.cpp
parent9be505fde2c695c90314b07a0ad90f537301f034 (diff)
Qt: 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()