]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/kitemviews/kstandarditemlistwidget.cpp
[KStandardItemListWidget] Round to icon size before applying scaling
[dolphin.git] / src / kitemviews / kstandarditemlistwidget.cpp
index d0a8fca20de08d7c4c25f3043792e40cdeeba7b2..12bd9d04fc5fc8d4ed986e7effc7c95d92a2caea 100644 (file)
@@ -1462,32 +1462,32 @@ void KStandardItemListWidget::closeRoleEditor()
 QPixmap KStandardItemListWidget::pixmapForIcon(const QString& name, const QStringList& overlays, int size, QIcon::Mode mode)
 {
     static const QIcon fallbackIcon = QIcon::fromTheme(QStringLiteral("unknown"));
+
+    int requestedSize = size;
+    if (size <= KIconLoader::SizeSmall) {
+        requestedSize = KIconLoader::SizeSmall;
+    } else if (size <= KIconLoader::SizeSmallMedium) {
+        requestedSize = KIconLoader::SizeSmallMedium;
+    } else if (size <= KIconLoader::SizeMedium) {
+        requestedSize = KIconLoader::SizeMedium;
+    } else if (size <= KIconLoader::SizeLarge) {
+        requestedSize = KIconLoader::SizeLarge;
+    } else if (size <= KIconLoader::SizeHuge) {
+        requestedSize = KIconLoader::SizeHuge;
+    } else if (size <= KIconLoader::SizeEnormous) {
+        requestedSize = KIconLoader::SizeEnormous;
+    } else if (size <= KIconLoader::SizeEnormous * 2) {
+        requestedSize = KIconLoader::SizeEnormous * 2;
+    }
     size *= qApp->devicePixelRatio();
+    requestedSize *= qApp->devicePixelRatio();
+
     const QString key = "KStandardItemListWidget:" % name % ":" % overlays.join(QStringLiteral(":")) % ":" % QString::number(size) % ":" % QString::number(mode);
     QPixmap pixmap;
 
     if (!QPixmapCache::find(key, pixmap)) {
         const QIcon icon = QIcon::fromTheme(name, fallbackIcon);
 
-        int requestedSize;
-        if (size <= KIconLoader::SizeSmall) {
-            requestedSize = KIconLoader::SizeSmall;
-        } else if (size <= KIconLoader::SizeSmallMedium) {
-            requestedSize = KIconLoader::SizeSmallMedium;
-        } else if (size <= KIconLoader::SizeMedium) {
-            requestedSize = KIconLoader::SizeMedium;
-        } else if (size <= KIconLoader::SizeLarge) {
-            requestedSize = KIconLoader::SizeLarge;
-        } else if (size <= KIconLoader::SizeHuge) {
-            requestedSize = KIconLoader::SizeHuge;
-        } else if (size <= KIconLoader::SizeEnormous) {
-            requestedSize = KIconLoader::SizeEnormous;
-        } else if (size <= KIconLoader::SizeEnormous * 2) {
-            requestedSize = KIconLoader::SizeEnormous * 2;
-        } else {
-            requestedSize = size;
-        }
-
         pixmap = icon.pixmap(requestedSize / qApp->devicePixelRatio(), requestedSize / qApp->devicePixelRatio(), mode);
         if (requestedSize != size) {
             KPixmapModifier::scale(pixmap, QSize(size, size));