diff options
| author | Michael Maltese <mchtly@gmail.com> | 2017-06-13 17:11:52 -0700 |
|---|---|---|
| committer | Michael Maltese <mchtly@gmail.com> | 2017-06-15 16:15:07 -0700 |
| commit | 5b6c8c3ad0902d27a15cb733fe29f9cbedf10e1a (patch) | |
| tree | 39a9b34fbc53fa72a40fe8e33b20f27bc6daf697 /Source/Core/DolphinQt2/Config/Mapping/MappingButton.cpp | |
| parent | 2188ac785af005037340eb5dd167d327266dbc8f (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.cpp | 28 |
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) |
