From 144476361698cc4f7025faa6683cf2c7f4010647 Mon Sep 17 00:00:00 2001 From: Aleksandr Reviakin Date: Fri, 16 Sep 2022 13:18:41 +0200 Subject: [PATCH] wasm: capture pointer unconditionally on PointerDown event MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The pointer events weren't captured previously if, for example, mouse was pressed inside the window and released outside of the window. Fixes: QTBUG-71948 Change-Id: Ie50e5c132fa03046f0c5b321c35a58cb9f34b67a Reviewed-by: Mikołaj Boc Reviewed-by: Morten Johan Sørvig (cherry picked from commit aee64bbe134b057b60e8848a8433cd9c4329b046) Reviewed-by: Qt Cherry-pick Bot --- src/plugins/platforms/wasm/qwasmcompositor.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/plugins/platforms/wasm/qwasmcompositor.cpp b/src/plugins/platforms/wasm/qwasmcompositor.cpp index 7dee14a97e8..741b64a17f5 100644 --- a/src/plugins/platforms/wasm/qwasmcompositor.cpp +++ b/src/plugins/platforms/wasm/qwasmcompositor.cpp @@ -928,6 +928,8 @@ bool QWasmCompositor::processPointer(const PointerEvent& event) switch (event.type) { case EventType::PointerDown: { + screen()->canvas().call("setPointerCapture", event.pointerId); + if (targetWindow) targetWindow->requestActivate(); @@ -940,6 +942,8 @@ bool QWasmCompositor::processPointer(const PointerEvent& event) } case EventType::PointerUp: { + screen()->canvas().call("releasePointerCapture", event.pointerId); + m_windowManipulation.onPointerUp(event); if (m_pressedWindow) { @@ -1100,8 +1104,6 @@ void QWasmCompositor::WindowManipulation::onPointerDown( .window = windowAtPoint, .operationSpecific = std::move(*operationSpecific), }); - - m_screen->canvas().call("setPointerCapture", event.pointerId); } void QWasmCompositor::WindowManipulation::onPointerMove( @@ -1140,7 +1142,6 @@ void QWasmCompositor::WindowManipulation::onPointerUp(const PointerEvent& event) return; m_state.reset(); - m_screen->canvas().call("releasePointerCapture", event.pointerId); } bool QWasmCompositor::processKeyboard(int eventType, const EmscriptenKeyboardEvent *emKeyEvent)