]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/kitemviews/kfileitemmodel.cpp
Don't use mixed units in size-column of details-view
[dolphin.git] / src / kitemviews / kfileitemmodel.cpp
index 4b026fea3d5a3859c4203778420c8bc4a96e9803..afc6decee81309d32d0fec60ef8fb21cd094a067 100644 (file)
@@ -1032,12 +1032,22 @@ bool KFileItemModel::lessThan(const ItemData* a, const ItemData* b) const
     }
 
     case SizeRole: {
-        const KIO::filesize_t sizeA = itemA.size();
-        const KIO::filesize_t sizeB = itemB.size();
-        if (sizeA < sizeB) {
-            result = -1;
-        } else if (sizeA > sizeB) {
-            result = +1;
+        if (itemA.isDir()) {
+            Q_ASSERT(itemB.isDir()); // see "if (m_sortFoldersFirst || m_sortRole == SizeRole)" above
+
+            const QVariant valueA = a->values.value("size");
+            const QVariant valueB = b->values.value("size");
+
+            if (valueA.isNull()) {
+                result = -1;
+            } else if (valueB.isNull()) {
+                result = +1;
+            } else {
+                result = valueA.value<KIO::filesize_t>() - valueB.value<KIO::filesize_t>();
+            }
+        } else {
+            Q_ASSERT(!itemB.isDir()); // see "if (m_sortFoldersFirst || m_sortRole == SizeRole)" above
+            result = itemA.size() - itemB.size();
         }
         break;
     }