summaryrefslogtreecommitdiffstats
path: root/src/gui/kernel/qshapedpixmapdndwindow.cpp
diff options
context:
space:
mode:
authorBłażej Szczygieł <spaz16@wp.pl>2017-07-13 20:02:58 +0200
committerBłażej Szczygieł <spaz16@wp.pl>2018-08-02 07:09:44 +0000
commitc5af04cf8aa7bf2fbeaaf2a40f169fe8c17239f1 (patch)
treee3845e31909c475b34b100bf7c8b9aab4b691ebb /src/gui/kernel/qshapedpixmapdndwindow.cpp
parent2de297f1b76b97146a4ef0a74b996c8fa6154ff8 (diff)
HiDPI: Fix calculating window mask from pixmap on drag and drop
Use platform window directly for setting a mask to prevent bitmap scaling if pixmap and window DPR are the same. Amends: 42f788ffe26d67864d569c3a3044619d49fc693a Task-number: QTBUG-61948 Change-Id: I5eec85c01f20bdefff7343e83ff10cbcb2c79508 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Diffstat (limited to 'src/gui/kernel/qshapedpixmapdndwindow.cpp')
-rw-r--r--src/gui/kernel/qshapedpixmapdndwindow.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/gui/kernel/qshapedpixmapdndwindow.cpp b/src/gui/kernel/qshapedpixmapdndwindow.cpp
index b54c6b67a2..8509eb0961 100644
--- a/src/gui/kernel/qshapedpixmapdndwindow.cpp
+++ b/src/gui/kernel/qshapedpixmapdndwindow.cpp
@@ -39,6 +39,8 @@
#include "qshapedpixmapdndwindow_p.h"
+#include "qplatformwindow.h"
+
#include <QtGui/QPainter>
#include <QtGui/QCursor>
#include <QtGui/QGuiApplication>
@@ -70,7 +72,12 @@ void QShapedPixmapWindow::setPixmap(const QPixmap &pixmap)
if (!mask.isNull()) {
if (!handle())
create();
- setMask(mask);
+ if (auto platformWindow = handle()) {
+ const auto pixmapDpr = m_pixmap.devicePixelRatio();
+ const auto winDpr = devicePixelRatio();
+ const auto maskSize = (QSizeF(m_pixmap.size()) * winDpr / pixmapDpr).toSize();
+ platformWindow->setMask(QBitmap(mask.scaled(maskSize)));
+ }
}
}
}