summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/wasm/qwasmwindowclientarea.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/platforms/wasm/qwasmwindowclientarea.cpp')
-rw-r--r--src/plugins/platforms/wasm/qwasmwindowclientarea.cpp31
1 files changed, 15 insertions, 16 deletions
diff --git a/src/plugins/platforms/wasm/qwasmwindowclientarea.cpp b/src/plugins/platforms/wasm/qwasmwindowclientarea.cpp
index 4a8d427e70b..04c3267bb65 100644
--- a/src/plugins/platforms/wasm/qwasmwindowclientarea.cpp
+++ b/src/plugins/platforms/wasm/qwasmwindowclientarea.cpp
@@ -19,19 +19,18 @@ QT_BEGIN_NAMESPACE
ClientArea::ClientArea(QWasmWindow *window, QWasmScreen *screen, emscripten::val element)
: m_screen(screen), m_window(window), m_element(element)
{
- const auto callback = std::function([this](emscripten::val event) {
- processPointer(*PointerEvent::fromWeb(event));
- event.call<void>("preventDefault");
- event.call<void>("stopPropagation");
- });
-
- m_pointerDownCallback =
- std::make_unique<qstdweb::EventCallback>(element, "pointerdown", callback);
- m_pointerMoveCallback =
- std::make_unique<qstdweb::EventCallback>(element, "pointermove", callback);
- m_pointerUpCallback = std::make_unique<qstdweb::EventCallback>(element, "pointerup", callback);
- m_pointerCancelCallback =
- std::make_unique<qstdweb::EventCallback>(element, "pointercancel", callback);
+ m_pointerDownCallback = std::make_unique<qstdweb::EventCallback>(element, "pointerdown",
+ [this](emscripten::val event){ processPointer(PointerEvent(EventType::PointerDown, event)); }
+ );
+ m_pointerMoveCallback = std::make_unique<qstdweb::EventCallback>(element, "pointermove",
+ [this](emscripten::val event){ processPointer(PointerEvent(EventType::PointerMove, event)); }
+ );
+ m_pointerUpCallback = std::make_unique<qstdweb::EventCallback>(element, "pointerup",
+ [this](emscripten::val event){ processPointer(PointerEvent(EventType::PointerUp, event)); }
+ );
+ m_pointerCancelCallback = std::make_unique<qstdweb::EventCallback>(element, "pointercancel",
+ [this](emscripten::val event){ processPointer(PointerEvent(EventType::PointerCancel, event)); }
+ );
element.call<void>("setAttribute", emscripten::val("draggable"), emscripten::val("true"));
@@ -69,9 +68,8 @@ ClientArea::ClientArea(QWasmWindow *window, QWasmScreen *screen, emscripten::val
}
-bool ClientArea::processPointer(const PointerEvent &event)
+void ClientArea::processPointer(const PointerEvent &event)
{
-
switch (event.type) {
case EventType::PointerDown:
m_element.call<void>("setPointerCapture", event.pointerId);
@@ -90,7 +88,8 @@ bool ClientArea::processPointer(const PointerEvent &event)
const bool eventAccepted = deliverEvent(event);
if (!eventAccepted && event.type == EventType::PointerDown)
QGuiApplicationPrivate::instance()->closeAllPopups();
- return eventAccepted;
+ event.webEvent.call<void>("preventDefault");
+ event.webEvent.call<void>("stopPropagation");
}
bool ClientArea::deliverEvent(const PointerEvent &event)