┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/kitemviews/private/kpixmapmodifier.cpp
diff options
context:
space:
mode:
authorDavid Edmundson <[email protected]>2015-03-30 13:39:17 +0200
committerDavid Edmundson <[email protected]>2015-03-30 13:39:17 +0200
commit4ed0b82b02aa787ba25bdc5a5e5a99037fdb6efa (patch)
treedac01c877cd1b93a721ff7a7e5873fb173eb58b0 /src/kitemviews/private/kpixmapmodifier.cpp
parentfba5dd58a55e191a3368cc85735826c2b9e18a8b (diff)
parent1b6ee5d6cd918b81c59a5163c9d6371f35f9885c (diff)
Merge branch 'davidedmundson/highdpi'
REVIEW: 123137
Diffstat (limited to 'src/kitemviews/private/kpixmapmodifier.cpp')
-rw-r--r--src/kitemviews/private/kpixmapmodifier.cpp15
1 files changed, 11 insertions, 4 deletions
diff --git a/src/kitemviews/private/kpixmapmodifier.cpp b/src/kitemviews/private/kpixmapmodifier.cpp
index c564ecc30..4693b313a 100644
--- a/src/kitemviews/private/kpixmapmodifier.cpp
+++ b/src/kitemviews/private/kpixmapmodifier.cpp
@@ -38,6 +38,7 @@
#include <QPainter>
#include <QPixmap>
#include <QSize>
+#include <QGuiApplication>
#include <config-X11.h> // for HAVE_XRENDER
@@ -347,6 +348,7 @@ void KPixmapModifier::scale(QPixmap& pixmap, const QSize& scaledSize)
}};
QPixmap scaledPixmap(scaledPixmapSize);
+ scaledPixmap.setDevicePixelRatio(pixmap.devicePixelRatio());
scaledPixmap.fill(Qt::transparent);
Display* dpy = QX11Info::display();
@@ -364,27 +366,32 @@ void KPixmapModifier::scale(QPixmap& pixmap, const QSize& scaledSize)
pixmap = pixmap.scaled(scaledSize, Qt::KeepAspectRatio, Qt::SmoothTransformation);
}
#else
+ qreal dpr = pixmap.devicePixelRatio();
pixmap = pixmap.scaled(scaledSize, Qt::KeepAspectRatio, Qt::SmoothTransformation);
+ pixmap.setDevicePixelRatio(dpr);
#endif
}
void KPixmapModifier::applyFrame(QPixmap& icon, const QSize& scaledSize)
{
static TileSet tileSet;
+ qreal dpr = qApp->devicePixelRatio();
// Resize the icon to the maximum size minus the space required for the frame
const QSize size(scaledSize.width() - TileSet::LeftMargin - TileSet::RightMargin,
scaledSize.height() - TileSet::TopMargin - TileSet::BottomMargin);
- scale(icon, size);
+ scale(icon, size * dpr);
+ icon.setDevicePixelRatio(dpr);
- QPixmap framedIcon(icon.size().width() + TileSet::LeftMargin + TileSet::RightMargin,
- icon.size().height() + TileSet::TopMargin + TileSet::BottomMargin);
+ QPixmap framedIcon(icon.size().width() + (TileSet::LeftMargin + TileSet::RightMargin) * dpr,
+ icon.size().height() + (TileSet::TopMargin + TileSet::BottomMargin) * dpr);
+ framedIcon.setDevicePixelRatio(dpr);
framedIcon.fill(Qt::transparent);
QPainter painter;
painter.begin(&framedIcon);
painter.setCompositionMode(QPainter::CompositionMode_Source);
- tileSet.paint(&painter, framedIcon.rect());
+ tileSet.paint(&painter, QRect(QPoint(0,0), framedIcon.size() / dpr));
painter.setCompositionMode(QPainter::CompositionMode_SourceOver);
painter.drawPixmap(TileSet::LeftMargin, TileSet::TopMargin, icon);