diff options
author | Liang Qi <liang.qi@qt.io> | 2016-08-10 17:43:12 +0200 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2016-08-10 17:43:13 +0200 |
commit | 8ba384a5645aebbefe34b814828024d511171497 (patch) | |
tree | 6f6cfe1b849b6e0e02de15ee74ad0f3d5fc740b6 /src/plugins/platforms/cocoa/qcocoadrag.mm | |
parent | e694ced803589b3504b6bdb2fc8bf97bc891c794 (diff) | |
parent | 25b72a63fffe800f2005b21d254b0b191d263b10 (diff) |
Merge remote-tracking branch 'origin/5.6' into 5.7
Change-Id: I1a63523de158757964b6fb5ea026cf69a6c5ddcf
Diffstat (limited to 'src/plugins/platforms/cocoa/qcocoadrag.mm')
-rw-r--r-- | src/plugins/platforms/cocoa/qcocoadrag.mm | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/plugins/platforms/cocoa/qcocoadrag.mm b/src/plugins/platforms/cocoa/qcocoadrag.mm index 872b97566f..bb8d12e3ce 100644 --- a/src/plugins/platforms/cocoa/qcocoadrag.mm +++ b/src/plugins/platforms/cocoa/qcocoadrag.mm @@ -40,6 +40,9 @@ #include "qcocoadrag.h" #include "qmacclipboard.h" #include "qcocoahelpers.h" +#ifndef QT_NO_WIDGETS +#include <QtWidgets/qwidget.h> +#endif QT_BEGIN_NAMESPACE @@ -187,7 +190,18 @@ QPixmap QCocoaDrag::dragPixmap(QDrag *drag, QPoint &hotSpot) const const int width = fm.width(s); const int height = fm.height(); if (width > 0 && height > 0) { - pm = QPixmap(width, height); + qreal dpr = 1.0; + if (const QWindow *sourceWindow = qobject_cast<QWindow *>(drag->source())) { + dpr = sourceWindow->devicePixelRatio(); + } +#ifndef QT_NO_WIDGETS + else if (const QWidget *sourceWidget = qobject_cast<QWidget *>(drag->source())) { + if (const QWindow *sourceWindow = sourceWidget->window()->windowHandle()) + dpr = sourceWindow->devicePixelRatio(); + } +#endif + pm = QPixmap(width * dpr, height * dpr); + pm.setDevicePixelRatio(dpr); QPainter p(&pm); p.fillRect(0, 0, pm.width(), pm.height(), Qt::color0); p.setPen(Qt::color1); |