diff options
| author | Michael Maltese <mchtly@gmail.com> | 2017-06-13 17:36:30 -0700 |
|---|---|---|
| committer | Michael Maltese <mchtly@gmail.com> | 2017-06-15 16:15:07 -0700 |
| commit | 7c79673d780872c26bc8cb6808d22826c0a806c1 (patch) | |
| tree | f7b58a4c9c6482ba46d819a98a5a0ac5b339c58f /Source/Core/DolphinQt2/Config/Mapping/MappingButton.cpp | |
| parent | 5b6c8c3ad0902d27a15cb733fe29f9cbedf10e1a (diff) | |
MappingButton: make m_block a Common::Flag
Diffstat (limited to 'Source/Core/DolphinQt2/Config/Mapping/MappingButton.cpp')
| -rw-r--r-- | Source/Core/DolphinQt2/Config/Mapping/MappingButton.cpp | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/Source/Core/DolphinQt2/Config/Mapping/MappingButton.cpp b/Source/Core/DolphinQt2/Config/Mapping/MappingButton.cpp index cfa33dcca3..84ba377337 100644 --- a/Source/Core/DolphinQt2/Config/Mapping/MappingButton.cpp +++ b/Source/Core/DolphinQt2/Config/Mapping/MappingButton.cpp @@ -33,19 +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("...")); - m_block = true; - grabKeyboard(); - grabMouse(); - // Avoid that the button press itself is registered as an event Common::SleepCurrentThread(100); @@ -55,7 +57,7 @@ void MappingButton::OnButtonPressed() releaseMouse(); releaseKeyboard(); - m_block = false; + m_block.Clear(); if (!expr.isEmpty()) { @@ -94,7 +96,7 @@ bool MappingButton::event(QEvent* event) 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 && + if (m_block.IsSet() && (event_type == QEvent::KeyPress || event_type == QEvent::KeyRelease || event_type == QEvent::MouseButtonPress || event_type == QEvent::MouseButtonRelease || event_type == QEvent::MouseButtonDblClick)) |
