qtbase-opensource-src/debian/patches/0033-update-debian-changelo...

67 lines
3.0 KiB
Diff

From: hanpinlong <hanpinlong@kylinos.cn>
Date: Thu, 25 May 2023 03:18:13 +0000
Subject: update debian/changelog.
Signed-off-by: hanpinlong <hanpinlong@kylinos.cn>
---
src/gui/kernel/qplatformwindow.cpp | 7 +++++++
src/gui/kernel/qplatformwindow.h | 1 +
src/plugins/platforms/xcb/qxcbconnection_xi2.cpp | 8 ++++----
3 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/src/gui/kernel/qplatformwindow.cpp b/src/gui/kernel/qplatformwindow.cpp
index 7207ff4..dfbd7d5 100644
--- a/src/gui/kernel/qplatformwindow.cpp
+++ b/src/gui/kernel/qplatformwindow.cpp
@@ -266,6 +266,13 @@ QPoint QPlatformWindow::mapToGlobal(const QPoint &pos) const
return result;
}
+QPointF QPlatformWindow::mapFromGlobalF(const QPointF &pos) const
+{
+ const QPoint posPt = pos.toPoint();
+ const QPointF delta = pos - posPt;
+ return mapFromGlobal(posPt) + delta;
+}
+
/*!
Translates the global screen coordinate \a pos to window
coordinates using native methods. This is required for embedded windows,
diff --git a/src/gui/kernel/qplatformwindow.h b/src/gui/kernel/qplatformwindow.h
index 7b85090..a92de4e 100644
--- a/src/gui/kernel/qplatformwindow.h
+++ b/src/gui/kernel/qplatformwindow.h
@@ -114,6 +114,7 @@ public:
virtual bool isForeignWindow() const { return false; };
virtual QPoint mapToGlobal(const QPoint &pos) const;
virtual QPoint mapFromGlobal(const QPoint &pos) const;
+ QPointF mapFromGlobalF(const QPointF &pos) const;
virtual void propagateSizeHints();
diff --git a/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp b/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
index fb2a335..cfff36d 100644
--- a/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
+++ b/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
@@ -1270,16 +1270,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);
- // 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)));
+ //! \note Fix QTBUG-77826
+ 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)));
+ //! \note Fix QTBUG-77826
+ local.setY(xcbWindow->mapFromGlobalF(global).y());
}
break;
case QXcbAtom::AbsPressure: