From 64fac4c9d4cb98957aee92961c3347f5029421f9 Mon Sep 17 00:00:00 2001 From: Stenzek Date: Sat, 5 Apr 2025 15:01:37 +1000 Subject: [PATCH] Qt: Fix interacting with pause menu after double-click-fullscreen --- src/duckstation-qt/displaywidget.cpp | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/duckstation-qt/displaywidget.cpp b/src/duckstation-qt/displaywidget.cpp index 01490a5f6..35cac05aa 100644 --- a/src/duckstation-qt/displaywidget.cpp +++ b/src/duckstation-qt/displaywidget.cpp @@ -307,7 +307,6 @@ bool DisplayWidget::event(QEvent* event) } case QEvent::MouseButtonPress: - case QEvent::MouseButtonDblClick: case QEvent::MouseButtonRelease: { if (!m_relative_mouse_enabled || !InputManager::IsUsingRawInput()) @@ -316,9 +315,22 @@ bool DisplayWidget::event(QEvent* event) emit windowMouseButtonEvent(static_cast(button_index), event->type() != QEvent::MouseButtonRelease); } + return true; + } + + case QEvent::MouseButtonDblClick: + { + // since we don't get press and release events for double-click, we need to send both the down and up + // otherwise the second click in a double click won't be registered by the input system + if (!m_relative_mouse_enabled || !InputManager::IsUsingRawInput()) + { + const u32 button_index = CountTrailingZeros(static_cast(static_cast(event)->button())); + emit windowMouseButtonEvent(static_cast(button_index), true); + emit windowMouseButtonEvent(static_cast(button_index), false); + } + // don't toggle fullscreen when we're bound.. that wouldn't end well. - if (event->type() == QEvent::MouseButtonDblClick && - static_cast(event)->button() == Qt::LeftButton && QtHost::IsSystemValid() && + if (static_cast(event)->button() == Qt::LeftButton && QtHost::IsSystemValid() && ((!QtHost::IsSystemPaused() && !m_relative_mouse_enabled && !InputManager::HasAnyBindingsForKey(InputManager::MakePointerButtonKey(0, 0))) || (QtHost::IsSystemPaused() && !ImGuiManager::WantsMouseInput())) &&