From 9d51fb579bb4655f6740096f17f1ced50258c28f Mon Sep 17 00:00:00 2001 From: Shawn Rutledge Date: Fri, 4 Dec 2020 10:28:26 +0100 Subject: Fix highdpi conversion of QTabletEvent coordinates on xcb MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Amends 1535fc9fb9ddbfce1680979c0634b4fdf8d75fca : when high-dpi scaling is enabled, there was an offset from the cursor position to the event position, because QWindow::mapFromGlobal() works in device-independent pixels, but we are using actual screen pixels here. Pick-to: 6.0 Pick-to: 5.15 Pick-to: 5.12 Task-number: QTBUG-77826 Change-Id: Ic8743b9e5c4041065f530ed1d9d6c49337b0207a Reviewed-by: Friedemann Kleint Reviewed-by: Morten Johan Sørvig --- src/plugins/platforms/xcb/qxcbconnection_xi2.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'src/plugins/platforms/xcb') diff --git a/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp b/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp index b754476d61..682cc9525a 100644 --- a/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp +++ b/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp @@ -1286,16 +1286,14 @@ void QXcbConnection::xi2ReportTabletEvent(const void *event, TabletData *tabletD if (Q_LIKELY(useValuators)) { const qreal value = scaleOneValuator(normalizedValue, physicalScreenArea.x(), physicalScreenArea.width()); global.setX(value); - // mapFromGlobal is ok for nested/embedded windows, but works only with whole-number QPoint; - // so map it first, then add back the sub-pixel position - local.setX(window->mapFromGlobal(QPoint(int(value), 0)).x() + (value - int(value))); + local.setX(xcbWindow->mapFromGlobalF(global).x()); } break; case QXcbAtom::AbsY: if (Q_LIKELY(useValuators)) { qreal value = scaleOneValuator(normalizedValue, physicalScreenArea.y(), physicalScreenArea.height()); global.setY(value); - local.setY(window->mapFromGlobal(QPoint(0, int(value))).y() + (value - int(value))); + local.setY(xcbWindow->mapFromGlobalF(global).y()); } break; case QXcbAtom::AbsPressure: -- cgit v1.2.3