┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/kitemviews
diff options
context:
space:
mode:
authorKai Uwe Broulik <[email protected]>2023-08-23 19:06:59 +0200
committerMéven Car <[email protected]>2023-08-23 19:48:05 +0000
commit5a7b749f5b524f771c549774de4783f014664135 (patch)
treec9632b0636998162910f9aaf14d40b96d6783c7c /src/kitemviews
parentae1980442d70aa04b1699fbba1c3503fdab58e6d (diff)
KStandardItemListWidget: Render pixmap with explicit dpr
Instead of using the one from QApplication, use the one from the window.
Diffstat (limited to 'src/kitemviews')
-rw-r--r--src/kitemviews/kstandarditemlistwidget.cpp17
-rw-r--r--src/kitemviews/kstandarditemlistwidget.h2
2 files changed, 12 insertions, 7 deletions
diff --git a/src/kitemviews/kstandarditemlistwidget.cpp b/src/kitemviews/kstandarditemlistwidget.cpp
index c4eab6d74..0772bccc9 100644
--- a/src/kitemviews/kstandarditemlistwidget.cpp
+++ b/src/kitemviews/kstandarditemlistwidget.cpp
@@ -1540,13 +1540,18 @@ void KStandardItemListWidget::closeRoleEditor()
m_roleEditor = nullptr;
}
-QPixmap KStandardItemListWidget::pixmapForIcon(const QString &name, const QStringList &overlays, int size, QIcon::Mode mode)
+QPixmap KStandardItemListWidget::pixmapForIcon(const QString &name, const QStringList &overlays, int size, QIcon::Mode mode) const
{
static const QIcon fallbackIcon = QIcon::fromTheme(QStringLiteral("unknown"));
+ qreal dpr = qApp->devicePixelRatio();
+ if (scene() && !scene()->views().isEmpty()) {
+ dpr = scene()->views().constFirst()->devicePixelRatioF();
+ }
- size *= qApp->devicePixelRatio();
+ size *= dpr;
- const QString key = "KStandardItemListWidget:" % name % ":" % overlays.join(QLatin1Char(':')) % ":" % QString::number(size) % ":" % QString::number(mode);
+ const QString key = "KStandardItemListWidget:" % name % ":" % overlays.join(QLatin1Char(':')) % ":" % QString::number(size) % "@" % QString::number(dpr)
+ % ":" % QString::number(mode);
QPixmap pixmap;
if (!QPixmapCache::find(key, &pixmap)) {
@@ -1554,11 +1559,11 @@ QPixmap KStandardItemListWidget::pixmapForIcon(const QString &name, const QStrin
if (icon.isNull()) {
icon = QIcon(name);
}
- if (icon.isNull() || icon.pixmap(size / qApp->devicePixelRatio(), size / qApp->devicePixelRatio(), mode).isNull()) {
+ if (icon.isNull() || icon.pixmap(size / dpr, size / dpr, mode).isNull()) {
icon = fallbackIcon;
}
- pixmap = icon.pixmap(size / qApp->devicePixelRatio(), size / qApp->devicePixelRatio(), mode);
+ pixmap = icon.pixmap(QSize(size / dpr, size / dpr), dpr, mode);
if (pixmap.width() != size || pixmap.height() != size) {
KPixmapModifier::scale(pixmap, QSize(size, size));
}
@@ -1595,7 +1600,7 @@ QPixmap KStandardItemListWidget::pixmapForIcon(const QString &name, const QStrin
QPixmapCache::insert(key, pixmap);
}
- pixmap.setDevicePixelRatio(qApp->devicePixelRatio());
+ pixmap.setDevicePixelRatio(dpr);
return pixmap;
}
diff --git a/src/kitemviews/kstandarditemlistwidget.h b/src/kitemviews/kstandarditemlistwidget.h
index 5bfb7df29..73bc393f4 100644
--- a/src/kitemviews/kstandarditemlistwidget.h
+++ b/src/kitemviews/kstandarditemlistwidget.h
@@ -215,7 +215,7 @@ private:
*/
void closeRoleEditor();
- static QPixmap pixmapForIcon(const QString &name, const QStringList &overlays, int size, QIcon::Mode mode);
+ QPixmap pixmapForIcon(const QString &name, const QStringList &overlays, int size, QIcon::Mode mode) const;
/**
* @return Preferred size of the rating-image based on the given