X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/5c33e0211ff09f37adb5b48c59cf15b67c0059dc..4cbeb81b2b8e2d37c93cda4d88787e08e0658291:/src/kitemviews/kstandarditemlistwidget.cpp diff --git a/src/kitemviews/kstandarditemlistwidget.cpp b/src/kitemviews/kstandarditemlistwidget.cpp index 01b135038..52df17ad3 100644 --- a/src/kitemviews/kstandarditemlistwidget.cpp +++ b/src/kitemviews/kstandarditemlistwidget.cpp @@ -1281,7 +1281,7 @@ void KStandardItemListWidget::updateIconsLayoutTextCache() // Calculate the position for each additional information qreal y = nameTextInfo->pos.y() + nameHeight; - for (const QByteArray &role : qAsConst(m_sortedVisibleRoles)) { + for (const QByteArray &role : std::as_const(m_sortedVisibleRoles)) { if (role == "text") { continue; } @@ -1347,7 +1347,7 @@ void KStandardItemListWidget::updateCompactLayoutTextCache() const qreal x = option.padding * 3 + iconSize(); qreal y = qRound((widgetHeight - textLinesHeight) / 2); const qreal maxWidth = size().width() - x - option.padding; - for (const QByteArray &role : qAsConst(m_sortedVisibleRoles)) { + for (const QByteArray &role : std::as_const(m_sortedVisibleRoles)) { const QString text = roleText(role, values); TextInfo *textInfo = m_textInfo.value(role); textInfo->staticText.setText(text); @@ -1397,7 +1397,7 @@ void KStandardItemListWidget::updateDetailsLayoutTextCache() qreal x = firstColumnInc; const qreal y = qMax(qreal(option.padding), (widgetHeight - fontHeight) / 2); - for (const QByteArray &role : qAsConst(m_sortedVisibleRoles)) { + for (const QByteArray &role : std::as_const(m_sortedVisibleRoles)) { QString text = roleText(role, values); // Elide the text in case it does not fit into the available column-width @@ -1544,13 +1544,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)) { @@ -1558,11 +1563,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)); } @@ -1599,7 +1604,7 @@ QPixmap KStandardItemListWidget::pixmapForIcon(const QString &name, const QStrin QPixmapCache::insert(key, pixmap); } - pixmap.setDevicePixelRatio(qApp->devicePixelRatio()); + pixmap.setDevicePixelRatio(dpr); return pixmap; }