mirror of
https://invent.kde.org/system/dolphin
synced 2024-10-05 16:19:10 +00:00
Create drag pixmaps which match the device pixel ratio
This commit is contained in:
parent
6a4d4463b8
commit
1fac8a7bba
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in a new issue