summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@digia.com>2014-08-28 17:01:21 +0200
committerFriedemann Kleint <Friedemann.Kleint@digia.com>2014-08-29 09:51:48 +0200
commit83dab766fc263bc085c54158d789fd5a17f52df5 (patch)
tree284e9cf9ba55b84922e3f231fdbf6612d1670950
parent1d66c9eba81ea8b73f354984e9eca2beda089faf (diff)
Windows: Fix QPlatformCursor::pos()/setPos() for DPR scaling.
Task-number: QTBUG-38858 Change-Id: Ibb0355ae19a382e4eb3805fe6d6afab2a2a603e6 Reviewed-by: Alessandro Portale <alessandro.portale@digia.com>
-rw-r--r--src/plugins/platforms/windows/qwindowscursor.cpp9
-rw-r--r--src/plugins/platforms/windows/qwindowscursor.h2
2 files changed, 9 insertions, 2 deletions
diff --git a/src/plugins/platforms/windows/qwindowscursor.cpp b/src/plugins/platforms/windows/qwindowscursor.cpp
index 8352dac0b6..eca8a33215 100644
--- a/src/plugins/platforms/windows/qwindowscursor.cpp
+++ b/src/plugins/platforms/windows/qwindowscursor.cpp
@@ -44,6 +44,7 @@
#include "qwindowscontext.h"
#include "qwindowswindow.h"
#include "qwindowsscreen.h"
+#include "qwindowsscaling.h"
#include <QtGui/QBitmap>
#include <QtGui/QImage>
@@ -624,9 +625,15 @@ QWindowsCursor::CursorState QWindowsCursor::cursorState()
return CursorHidden;
}
+QPoint QWindowsCursor::pos() const
+{
+ return mousePosition() / QWindowsScaling::factor();
+}
+
void QWindowsCursor::setPos(const QPoint &pos)
{
- SetCursorPos(pos.x(), pos.y());
+ const QPoint posDp = pos * QWindowsScaling::factor();
+ SetCursorPos(posDp.x() , posDp.y());
}
/*!
diff --git a/src/plugins/platforms/windows/qwindowscursor.h b/src/plugins/platforms/windows/qwindowscursor.h
index 34cb668856..89214156e8 100644
--- a/src/plugins/platforms/windows/qwindowscursor.h
+++ b/src/plugins/platforms/windows/qwindowscursor.h
@@ -102,7 +102,7 @@ public:
QWindowsCursor() {}
void changeCursor(QCursor * widgetCursor, QWindow * widget) Q_DECL_OVERRIDE;
- QPoint pos() const Q_DECL_OVERRIDE { return mousePosition(); }
+ QPoint pos() const Q_DECL_OVERRIDE;
void setPos(const QPoint &pos) Q_DECL_OVERRIDE;
static HCURSOR createPixmapCursor(const QPixmap &pixmap, const QPoint &hotSpot);