summaryrefslogtreecommitdiff
path: root/Source/Core/DolphinQt2/Config/Mapping/MappingButton.cpp
diff options
context:
space:
mode:
authorshuffle2 <godisgovernment@gmail.com>2017-06-27 01:57:26 -0700
committerGitHub <noreply@github.com>2017-06-27 01:57:26 -0700
commit94ba78d71701bab19362d49bc2700912bc5c7991 (patch)
treea693854429a50168580476ab5a72e3def66654ba /Source/Core/DolphinQt2/Config/Mapping/MappingButton.cpp
parent540ee18966072735e7d07b770223d0ac7a58cb95 (diff)
parent7c79673d780872c26bc8cb6808d22826c0a806c1 (diff)
Merge pull request #5614 from ligfx/qtinputmappingrandomcleanups
DolphinQt: small input mapping code cleanups and fixes
Diffstat (limited to 'Source/Core/DolphinQt2/Config/Mapping/MappingButton.cpp')
-rw-r--r--Source/Core/DolphinQt2/Config/Mapping/MappingButton.cpp49
1 files changed, 23 insertions, 26 deletions
diff --git a/Source/Core/DolphinQt2/Config/Mapping/MappingButton.cpp b/Source/Core/DolphinQt2/Config/Mapping/MappingButton.cpp
index 02e6917d8c..84ba377337 100644
--- a/Source/Core/DolphinQt2/Config/Mapping/MappingButton.cpp
+++ b/Source/Core/DolphinQt2/Config/Mapping/MappingButton.cpp
@@ -33,22 +33,21 @@ void MappingButton::Connect()
void MappingButton::OnButtonPressed()
{
- if (m_block || m_parent->GetDevice() == nullptr || !m_reference->IsInput())
+ if (m_parent->GetDevice() == nullptr || !m_reference->IsInput())
return;
+ if (!m_block.TestAndSet())
+ return;
+
+ grabKeyboard();
+ grabMouse();
+
// Make sure that we don't block event handling
std::thread([this] {
const auto dev = m_parent->GetDevice();
setText(QStringLiteral("..."));
- Common::SleepCurrentThread(100);
-
- SetBlockInputs(true);
-
- if (m_parent->GetFirstButtonPress())
- m_reference->Detect(10, dev.get());
-
// Avoid that the button press itself is registered as an event
Common::SleepCurrentThread(100);
@@ -56,7 +55,10 @@ void MappingButton::OnButtonPressed()
m_parent->GetParent()->GetDeviceQualifier(),
m_parent->GetController()->default_device);
- SetBlockInputs(false);
+ releaseMouse();
+ releaseKeyboard();
+ m_block.Clear();
+
if (!expr.isEmpty())
{
m_reference->expression = expr.toStdString();
@@ -89,25 +91,20 @@ void MappingButton::Update()
m_parent->SaveSettings();
}
-void MappingButton::SetBlockInputs(const bool block)
-{
- m_parent->SetBlockInputs(block);
- m_block = block;
-}
-
-void MappingWindow::OnDefaultFieldsPressed()
-{
- if (m_controller == nullptr)
- return;
-
- m_controller->LoadDefaults(g_controller_interface);
- m_controller->UpdateReferences(g_controller_interface);
- emit Update();
-}
-
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.IsSet() &&
+ (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)