summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/wasm/qwasmwindowclientarea.cpp
diff options
context:
space:
mode:
authorMikolaj Boc <mikolaj.boc@qt.io>2023-02-03 18:16:17 +0100
committerMikolaj Boc <mikolaj.boc@qt.io>2023-02-14 07:34:25 +0100
commitd6eea89bc6a4f64c08486a9fd87479707455c381 (patch)
treed06f7f55cf3c48218512b92dcfba0183a1277429 /src/plugins/platforms/wasm/qwasmwindowclientarea.cpp
parent249d613a60aa6a1347ebc1c29902049247b93324 (diff)
Use floating point coords for mouse/wheel events on wasm
Fractional mouse movements may be reported on hi-dpi. Floating point event fields help us perform correct calculations in line with the web platform. Change-Id: Ic0c457db408c2bf28179ffcfdb032cde64ca8bbd Reviewed-by: Lorn Potter <lorn.potter@gmail.com> Reviewed-by: Aleksandr Reviakin <aleksandr.reviakin@qt.io>
Diffstat (limited to 'src/plugins/platforms/wasm/qwasmwindowclientarea.cpp')
-rw-r--r--src/plugins/platforms/wasm/qwasmwindowclientarea.cpp11
1 files changed, 5 insertions, 6 deletions
diff --git a/src/plugins/platforms/wasm/qwasmwindowclientarea.cpp b/src/plugins/platforms/wasm/qwasmwindowclientarea.cpp
index e3e17baa1e9..d6c6b14b57f 100644
--- a/src/plugins/platforms/wasm/qwasmwindowclientarea.cpp
+++ b/src/plugins/platforms/wasm/qwasmwindowclientarea.cpp
@@ -39,7 +39,7 @@ bool ClientArea::processPointer(const PointerEvent &event)
dom::mapPoint(event.target, m_screen->element(), event.localPoint);
const auto pointInScreen = m_screen->mapFromLocal(localScreenPoint);
- const QPoint pointInTargetWindowCoords = m_window->mapFromGlobal(pointInScreen);
+ const QPointF pointInTargetWindowCoords = m_window->window()->mapFromGlobal(pointInScreen);
switch (event.type) {
case EventType::PointerDown: {
@@ -73,11 +73,10 @@ bool ClientArea::deliverEvent(const PointerEvent &event)
const auto pointInScreen = m_screen->mapFromLocal(
dom::mapPoint(event.target, m_screen->element(), event.localPoint));
- const QPoint targetPointClippedToScreen(
- std::max(m_screen->geometry().left(),
- std::min(m_screen->geometry().right(), pointInScreen.x())),
- std::max(m_screen->geometry().top(),
- std::min(m_screen->geometry().bottom(), pointInScreen.y())));
+ const auto geometryF = m_screen->geometry().toRectF();
+ const QPointF targetPointClippedToScreen(
+ qBound(geometryF.left(), pointInScreen.x(), geometryF.right()),
+ qBound(geometryF.top(), pointInScreen.y(), geometryF.bottom()));
const QEvent::Type eventType =
MouseEvent::mouseEventTypeFromEventType(event.type, WindowArea::Client);