Stabilize sort of search email identifiers: Bug #733271
Without stabilization, it was possible for multiple emails in search results with the same INTERNALDATE to be dropped due to the equality.
This commit is contained in:
parent
1398cccfb1
commit
9933f2d3fe
1 changed files with 9 additions and 2 deletions
|
|
@ -53,11 +53,18 @@ private class Geary.ImapDB.SearchEmailIdentifier : ImapDB.EmailIdentifier,
|
|||
}
|
||||
|
||||
public virtual int compare_to(SearchEmailIdentifier other) {
|
||||
if (date_received != null && other.date_received != null)
|
||||
return date_received.compare(other.date_received);
|
||||
// if both have date received, compare on that, using stable sort if the same
|
||||
if (date_received != null && other.date_received != null) {
|
||||
int compare = date_received.compare(other.date_received);
|
||||
|
||||
return (compare != 0) ? compare : stable_sort_comparator(other);
|
||||
}
|
||||
|
||||
// if neither have date received, fall back on stable sort
|
||||
if (date_received == null && other.date_received == null)
|
||||
return stable_sort_comparator(other);
|
||||
|
||||
// put identifiers with no date ahead of those with
|
||||
return (date_received == null ? -1 : 1);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue