]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Create drag pixmaps which match the device pixel ratio
authorDavid Edmundson <kde@davidedmundson.co.uk>
Thu, 5 Mar 2015 14:12:52 +0000 (15:12 +0100)
committerDavid Edmundson <kde@davidedmundson.co.uk>
Wed, 25 Mar 2015 17:31:40 +0000 (18:31 +0100)
src/kitemviews/kfileitemlistview.cpp
src/kitemviews/kitemlistcontroller.cpp
src/kitemviews/kitemlistwidget.cpp

index d249bef91b9e0314c585f08885306b272a43a9e3..18b1935722a663485d14d0c41a1d24fcafd67d45 100644 (file)
@@ -29,6 +29,8 @@
 
 #include <QPainter>
 #include <QTimer>
+#include <QGraphicsScene>
+#include <QGraphicsView>
 
 // #define KFILEITEMLISTVIEW_DEBUG
 
@@ -154,8 +156,10 @@ QPixmap KFileItemListView::createDragPixmap(const KItemSet& indexes) const
         yCount = xCount;
     }
 
+    qreal dpr = scene()->views()[0]->devicePixelRatio();
     // Draw the selected items into the grid cells.
-    QPixmap dragPixmap(xCount * size + xCount, yCount * size + yCount);
+    QPixmap dragPixmap(QSize(xCount * size + xCount, yCount * size + yCount)*dpr);
+    dragPixmap.setDevicePixelRatio(dpr);
     dragPixmap.fill(Qt::transparent);
 
     QPainter painter(&dragPixmap);
@@ -168,7 +172,7 @@ QPixmap KFileItemListView::createDragPixmap(const KItemSet& indexes) const
             QIcon icon = QIcon::fromTheme(model()->data(index).value("iconName").toString());
             pixmap = icon.pixmap(size, size);
         } else {
-            KPixmapModifier::scale(pixmap, QSize(size, size));
+            KPixmapModifier::scale(pixmap, QSize(size, size) * dpr);
         }
 
         painter.drawPixmap(x, y, pixmap);
index a9ebf97af9a5e44336491ebd3b340ff754544d4f..1c86ff03ff9b0b12bb0d2927f8e4ed1e0b67b38d 100644 (file)
@@ -1168,7 +1168,7 @@ void KItemListController::startDragging()
     const QPixmap pixmap = m_view->createDragPixmap(selectedItems);
     drag->setPixmap(pixmap);
 
-    const QPoint hotSpot(pixmap.width() / 2, 0);
+    const QPoint hotSpot((pixmap.width() / pixmap.devicePixelRatio()) / 2, 0);
     drag->setHotSpot(hotSpot);
 
     drag->exec(Qt::MoveAction | Qt::CopyAction | Qt::LinkAction, Qt::CopyAction);
index 3eb6b1d71a24b3857a7209ce8961865911f24042..596d1d709c5b6d8b0351f256459d45bca15986c0 100644 (file)
@@ -369,6 +369,8 @@ QPixmap KItemListWidget::createDragPixmap(const QStyleOptionGraphicsItem* option
                                           QWidget* widget)
 {
     QPixmap pixmap(size().toSize());
+    QPixmap pixmap(size().toSize() * widget->devicePixelRatio());
+    pixmap.setDevicePixelRatio(widget->devicePixelRatio());
     pixmap.fill(Qt::transparent);
 
     QPainter painter(&pixmap);