summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLorn Potter <lorn.potter@gmail.com>2023-11-21 14:04:20 +1000
committerLorn Potter <lorn.potter@gmail.com>2023-12-20 00:46:17 +0000
commit0367aace14b61e72433fa7cb7aab18b3def0030c (patch)
treed380d7de1ad1b28178f9e4b0b216512f461dcd39 /src
parent585f348f3c8137cec4ab503eecc28296da2798f7 (diff)
wasm: fix Pen input
This also adds the ability to distinguish between a Pen and a Touch. Fixes: QTBUG-116989 Change-Id: Iffc5d20c9b46c1746a03c45dd12017d5dd5172a5 Pick-to: 6.6 6.7 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/plugins/platforms/wasm/qwasmevent.cpp2
-rw-r--r--src/plugins/platforms/wasm/qwasmevent.h1
-rw-r--r--src/plugins/platforms/wasm/qwasmwindowclientarea.cpp2
3 files changed, 4 insertions, 1 deletions
diff --git a/src/plugins/platforms/wasm/qwasmevent.cpp b/src/plugins/platforms/wasm/qwasmevent.cpp
index 5a50a4d14dc..98df694b552 100644
--- a/src/plugins/platforms/wasm/qwasmevent.cpp
+++ b/src/plugins/platforms/wasm/qwasmevent.cpp
@@ -180,6 +180,8 @@ PointerEvent::PointerEvent(EventType type, emscripten::val event) : MouseEvent(t
return PointerType::Mouse;
if (type == "touch")
return PointerType::Touch;
+ if (type == "pen")
+ return PointerType::Pen;
return PointerType::Other;
})();
width = event["width"].as<qreal>();
diff --git a/src/plugins/platforms/wasm/qwasmevent.h b/src/plugins/platforms/wasm/qwasmevent.h
index 5ad441f2fbe..8ccbbb71045 100644
--- a/src/plugins/platforms/wasm/qwasmevent.h
+++ b/src/plugins/platforms/wasm/qwasmevent.h
@@ -39,6 +39,7 @@ enum class EventType {
enum class PointerType {
Mouse,
Touch,
+ Pen,
Other,
};
diff --git a/src/plugins/platforms/wasm/qwasmwindowclientarea.cpp b/src/plugins/platforms/wasm/qwasmwindowclientarea.cpp
index 0cea2690c48..2c9f2157602 100644
--- a/src/plugins/platforms/wasm/qwasmwindowclientarea.cpp
+++ b/src/plugins/platforms/wasm/qwasmwindowclientarea.cpp
@@ -84,7 +84,7 @@ bool ClientArea::deliverEvent(const PointerEvent &event)
pointInTargetWindowCoords.y() / m_window->window()->height());
const auto tp = m_pointerIdToTouchPoints.find(event.pointerId);
- if (tp != m_pointerIdToTouchPoints.end()) {
+ if (event.pointerType != PointerType::Pen && tp != m_pointerIdToTouchPoints.end()) {
touchPoint = &tp.value();
} else {
touchPoint = &m_pointerIdToTouchPoints