┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/kitemviews/kfileitemmodel.cpp
diff options
context:
space:
mode:
authorChristian Muehlhaeuser <[email protected]>2021-07-10 19:35:26 +0200
committerElvis Angelaccio <[email protected]>2021-07-13 21:48:41 +0200
commitbaaf0c29b857997720b9cb0d584a44306963fb97 (patch)
treec634d47101c64260f97bb3c60020282d07f29e01 /src/kitemviews/kfileitemmodel.cpp
parent7e0d3e04ce96ce59caeac8cd5aa970530b55c0ab (diff)
Ensure stable sort order when sorting by size
Folders with equal size caused the sort operation to become unstable, as the result of lessThan was non-deterministic. We need the fallback mechanisms at the bottom of the function to resovle the situation and provide a stable sort order. This also fixes expanding the contents of a folder into the wrong parent. BUG: 433247 FIXED-IN: 21.08
Diffstat (limited to 'src/kitemviews/kfileitemmodel.cpp')
-rw-r--r--src/kitemviews/kfileitemmodel.cpp18
1 files changed, 13 insertions, 5 deletions
diff --git a/src/kitemviews/kfileitemmodel.cpp b/src/kitemviews/kfileitemmodel.cpp
index 9441bc871..e03ec7c0e 100644
--- a/src/kitemviews/kfileitemmodel.cpp
+++ b/src/kitemviews/kfileitemmodel.cpp
@@ -1798,17 +1798,25 @@ int KFileItemModel::sortRoleCompare(const ItemData* a, const ItemData* b, const
auto valueB = b->values.value("count");
if (valueA.isNull()) {
if (valueB.isNull()) {
- return 0;
+ result = 0;
+ break;
} else {
- return -1;
+ result = -1;
+ break;
}
} else if (valueB.isNull()) {
- return +1;
+ result = +1;
+ break;
} else {
if (valueA.toLongLong() < valueB.toLongLong()) {
- return -1;
+ result = -1;
+ break;
+ } else if (valueA.toLongLong() > valueB.toLongLong()) {
+ result = +1;
+ break;
} else {
- return +1;
+ result = 0;
+ break;
}
}
}