From: Christian Muehlhaeuser Date: Sat, 10 Jul 2021 17:35:26 +0000 (+0200) Subject: Ensure stable sort order when sorting by size X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/commitdiff_plain/baaf0c29b857997720b9cb0d584a44306963fb97 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 --- 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; } } }