diff options
author | Aleksandr Reviakin <aleksandr.reviakin@qt.io> | 2022-09-16 13:18:41 +0200 |
---|---|---|
committer | Aleksandr Reviakin <aleksandr.reviakin@qt.io> | 2022-09-19 12:14:14 +0200 |
commit | aee64bbe134b057b60e8848a8433cd9c4329b046 (patch) | |
tree | 4d8a54f256e52f04b3a66af9c156bc1f7b91fa11 /src/plugins | |
parent | 81d9b5ada4d6e495a592123cf76ac5fff0718014 (diff) |
wasm: capture pointer unconditionally on PointerDown event
The pointer events weren't captured previously
if, for example, mouse was pressed inside the window
and released outside of the window.
Pick-to: 6.4
Fixes: QTBUG-71948
Change-Id: Ie50e5c132fa03046f0c5b321c35a58cb9f34b67a
Reviewed-by: Mikołaj Boc <Mikolaj.Boc@qt.io>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/platforms/wasm/qwasmcompositor.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/plugins/platforms/wasm/qwasmcompositor.cpp b/src/plugins/platforms/wasm/qwasmcompositor.cpp index a892f7077b..8ba67040a5 100644 --- a/src/plugins/platforms/wasm/qwasmcompositor.cpp +++ b/src/plugins/platforms/wasm/qwasmcompositor.cpp @@ -606,6 +606,8 @@ bool QWasmCompositor::processPointer(const PointerEvent& event) switch (event.type) { case EventType::PointerDown: { + screen()->canvas().call<void>("setPointerCapture", event.pointerId); + if (targetWindow) targetWindow->requestActivate(); @@ -619,6 +621,8 @@ bool QWasmCompositor::processPointer(const PointerEvent& event) } case EventType::PointerUp: { + screen()->canvas().call<void>("releasePointerCapture", event.pointerId); + m_windowManipulation.onPointerUp(event); if (m_pressedWindow) { @@ -779,8 +783,6 @@ void QWasmCompositor::WindowManipulation::onPointerDown( .window = windowAtPoint, .operationSpecific = std::move(*operationSpecific), }); - - m_screen->canvas().call<void>("setPointerCapture", event.pointerId); } void QWasmCompositor::WindowManipulation::onPointerMove( @@ -818,7 +820,6 @@ void QWasmCompositor::WindowManipulation::onPointerUp(const PointerEvent& event) return; m_state.reset(); - m_screen->canvas().call<void>("releasePointerCapture", event.pointerId); } bool QWasmCompositor::processKeyboard(int eventType, const EmscriptenKeyboardEvent *emKeyEvent) |