diff options
author | Lorn Potter <lorn.potter@gmail.com> | 2021-11-25 16:39:45 +1000 |
---|---|---|
committer | Lorn Potter <lorn.potter@gmail.com> | 2021-11-27 14:17:37 +1000 |
commit | 820a6d4117fc59b960e273e5f10d65b89217ce61 (patch) | |
tree | 2515e86262ebb40dda9e70055e5037fc5fc4a8ef /src/plugins/platforms | |
parent | 625cfb6b400a88b26b7295f21699c9db28b71483 (diff) |
wasm: fix mouse move and right click
Emscripten has no concept of 'no mouse button', so when there
is no button down, it was sending left mouse.
Also we were hiding mousepress for only leftmouse downs.
Fixes: QTBUG-97431
Pick-to: 6.2
Change-Id: Ibf078705c343944e45551830b7fee94ed5aa7333
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
Diffstat (limited to 'src/plugins/platforms')
-rw-r--r-- | src/plugins/platforms/wasm/qwasmeventtranslator.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/plugins/platforms/wasm/qwasmeventtranslator.cpp b/src/plugins/platforms/wasm/qwasmeventtranslator.cpp index 0017e182a2..5f809140f5 100644 --- a/src/plugins/platforms/wasm/qwasmeventtranslator.cpp +++ b/src/plugins/platforms/wasm/qwasmeventtranslator.cpp @@ -437,7 +437,7 @@ bool QWasmEventTranslator::processMouse(int eventType, const EmscriptenMouseEven QPoint globalPoint = screen()->geometry().topLeft() + targetPoint; QEvent::Type buttonEventType = QEvent::None; - Qt::MouseButton button = translateMouseButton(mouseEvent->button); + Qt::MouseButton button = Qt::NoButton; Qt::KeyboardModifiers modifiers = translateMouseEventModifier(mouseEvent); QWindow *window2 = nullptr; @@ -457,19 +457,22 @@ bool QWasmEventTranslator::processMouse(int eventType, const EmscriptenMouseEven switch (eventType) { case EMSCRIPTEN_EVENT_MOUSEDOWN: { + button = translateMouseButton(mouseEvent->button); + if (window2) window2->requestActivate(); pressedButtons.setFlag(button); + pressedWindow = window2; + buttonEventType = QEvent::MouseButtonPress; + // button overview: // 0 = primary mouse button, usually left click // 1 = middle mouse button, usually mouse wheel // 2 = right mouse button, usually right click // from: https://w3c.github.io/uievents/#dom-mouseevent-button if (mouseEvent->button == 0) { - pressedWindow = window2; - buttonEventType = QEvent::MouseButtonPress; if (!(htmlWindow->m_windowState & Qt::WindowFullScreen) && !(htmlWindow->m_windowState & Qt::WindowMaximized)) { if (htmlWindow && window2->flags().testFlag(Qt::WindowTitleHint) && htmlWindow->isPointOnTitle(globalPoint)) draggedWindow = window2; @@ -487,7 +490,8 @@ bool QWasmEventTranslator::processMouse(int eventType, const EmscriptenMouseEven } case EMSCRIPTEN_EVENT_MOUSEUP: { - pressedButtons.setFlag(translateMouseButton(mouseEvent->button), false); + button = translateMouseButton(mouseEvent->button); + pressedButtons.setFlag(button, false); buttonEventType = QEvent::MouseButtonRelease; QWasmWindow *oldWindow = nullptr; |