summaryrefslogtreecommitdiff
path: root/Source/Core/DolphinQt2/Config/Mapping/MappingButton.cpp
diff options
context:
space:
mode:
authorMichael Maltese <mchtly@gmail.com>2017-06-13 17:11:52 -0700
committerMichael Maltese <mchtly@gmail.com>2017-06-15 16:15:07 -0700
commit5b6c8c3ad0902d27a15cb733fe29f9cbedf10e1a (patch)
tree39a9b34fbc53fa72a40fe8e33b20f27bc6daf697 /Source/Core/DolphinQt2/Config/Mapping/MappingButton.cpp
parent2188ac785af005037340eb5dd167d327266dbc8f (diff)
MappingButton: grab and release mouse and keyboard instead of calling parent SetBlockInputs
Diffstat (limited to 'Source/Core/DolphinQt2/Config/Mapping/MappingButton.cpp')
-rw-r--r--Source/Core/DolphinQt2/Config/Mapping/MappingButton.cpp28
1 files changed, 19 insertions, 9 deletions
diff --git a/Source/Core/DolphinQt2/Config/Mapping/MappingButton.cpp b/Source/Core/DolphinQt2/Config/Mapping/MappingButton.cpp
index b72f13aa9a..cfa33dcca3 100644
--- a/Source/Core/DolphinQt2/Config/Mapping/MappingButton.cpp
+++ b/Source/Core/DolphinQt2/Config/Mapping/MappingButton.cpp
@@ -42,7 +42,9 @@ void MappingButton::OnButtonPressed()
setText(QStringLiteral("..."));
- SetBlockInputs(true);
+ m_block = true;
+ grabKeyboard();
+ grabMouse();
// Avoid that the button press itself is registered as an event
Common::SleepCurrentThread(100);
@@ -51,7 +53,10 @@ void MappingButton::OnButtonPressed()
m_parent->GetParent()->GetDeviceQualifier(),
m_parent->GetController()->default_device);
- SetBlockInputs(false);
+ releaseMouse();
+ releaseKeyboard();
+ m_block = false;
+
if (!expr.isEmpty())
{
m_reference->expression = expr.toStdString();
@@ -84,15 +89,20 @@ void MappingButton::Update()
m_parent->SaveSettings();
}
-void MappingButton::SetBlockInputs(const bool block)
-{
- m_parent->SetBlockInputs(block);
- m_block = block;
-}
-
bool MappingButton::event(QEvent* event)
{
- return !m_block ? QPushButton::event(event) : true;
+ const QEvent::Type event_type = event->type();
+ // Returning 'true' means "yes, this event has been handled, don't propagate it to parent
+ // widgets".
+ if (m_block &&
+ (event_type == QEvent::KeyPress || event_type == QEvent::KeyRelease ||
+ event_type == QEvent::MouseButtonPress || event_type == QEvent::MouseButtonRelease ||
+ event_type == QEvent::MouseButtonDblClick))
+ {
+ return true;
+ }
+
+ return QPushButton::event(event);
}
void MappingButton::mouseReleaseEvent(QMouseEvent* event)