diff options
author | Błażej Szczygieł <spaz16@wp.pl> | 2017-07-13 20:02:58 +0200 |
---|---|---|
committer | Błażej Szczygieł <spaz16@wp.pl> | 2018-08-02 07:09:44 +0000 |
commit | c5af04cf8aa7bf2fbeaaf2a40f169fe8c17239f1 (patch) | |
tree | e3845e31909c475b34b100bf7c8b9aab4b691ebb /src/gui/kernel/qshapedpixmapdndwindow.cpp | |
parent | 2de297f1b76b97146a4ef0a74b996c8fa6154ff8 (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.cpp | 9 |
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))); + } } } } |