summaryrefslogtreecommitdiffstats
path: root/src/plugins
diff options
context:
space:
mode:
authorQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2020-01-07 01:01:16 +0100
committerQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2020-01-07 01:01:16 +0100
commitc75e8a661852952b12da95c48ad2c1b88e6cf7e1 (patch)
tree5a32acf6e2fa4a6500372aa0c94b70b112a3f1c7 /src/plugins
parent68c30e372b01561e8809fcfa5426ae896da70b8e (diff)
parent1535fc9fb9ddbfce1680979c0634b4fdf8d75fca (diff)
Merge remote-tracking branch 'origin/5.14' into 5.15
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/platforms/xcb/qxcbconnection_xi2.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp b/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
index bd62460b96..2d114c51b3 100644
--- a/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
+++ b/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
@@ -1252,14 +1252,16 @@ void QXcbConnection::xi2ReportTabletEvent(const void *event, TabletData *tabletD
if (Q_LIKELY(useValuators)) {
const qreal value = scaleOneValuator(normalizedValue, physicalScreenArea.x(), physicalScreenArea.width());
global.setX(value);
- local.setX(value - window->handle()->geometry().x());
+ // 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)));
}
break;
case QXcbAtom::AbsY:
if (Q_LIKELY(useValuators)) {
qreal value = scaleOneValuator(normalizedValue, physicalScreenArea.y(), physicalScreenArea.height());
global.setY(value);
- local.setY(value - window->handle()->geometry().y());
+ local.setY(window->mapFromGlobal(QPoint(0, int(value))).y() + (value - int(value)));
}
break;
case QXcbAtom::AbsPressure: