Commit baaf0c29 authored by Christian Muehlhaeuser's avatar Christian Muehlhaeuser Committed by Elvis Angelaccio
Browse files

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
parent 7e0d3e04
Pipeline #70636 skipped
......@@ -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;
}
}
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment