diff options
| author | Mikolaj Boc <mikolaj.boc@qt.io> | 2023-02-03 18:16:17 +0100 |
|---|---|---|
| committer | Mikolaj Boc <mikolaj.boc@qt.io> | 2023-02-14 07:34:25 +0100 |
| commit | d6eea89bc6a4f64c08486a9fd87479707455c381 (patch) | |
| tree | d06f7f55cf3c48218512b92dcfba0183a1277429 /src/plugins/platforms/wasm/qwasmwindowclientarea.cpp | |
| parent | 249d613a60aa6a1347ebc1c29902049247b93324 (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.cpp | 11 |
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); |
