From 114b3d9d470e65c25bcb5711daf053478f30e319 Mon Sep 17 00:00:00 2001 From: Berthold Stoeger Date: Sat, 11 May 2019 08:46:08 +0200 Subject: Core: consider dive-number on sorting A user reports a problem when dives have the same time but different numbers. The dives appear sorted randomly (effectively they are sorted by an internal unique-id). Try to sort by number for dives at the same date in this case. Fixes #2086 Signed-off-by: Berthold Stoeger --- CHANGELOG.md | 1 + core/divelist.c | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 05ec45f0b..647f07628 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ - Import: Small enhancements on Suunto SDE import - Desktop: Add import dive site menu option and site selection dialog +- Core: Sort dives by number if at the same date - Core: fix bug in get_distance() to correctly compute spherical distance - Desktop: For videos, add save data export as subtitle file - Desktop: make dive sites 1st class citizens with their own dive site table diff --git a/core/divelist.c b/core/divelist.c index f7a3f5643..9ae87a328 100644 --- a/core/divelist.c +++ b/core/divelist.c @@ -779,7 +779,7 @@ struct dive *last_selected_dive() * After editing a key used in this sort-function, the order of * the dives must be re-astablished. * Currently, this does a lexicographic sort on the - * (start-time, trip-time, id) tuple. + * (start-time, trip-time, number, id) tuple. * trip-time is defined such that dives that do not belong to * a trip are sorted *after* dives that do. Thus, in the default * chronologically-descending sort order, they are shown *before*. @@ -804,6 +804,10 @@ static int comp_dives(const struct dive *a, const struct dive *b) if (trip_date(a->divetrip) > trip_date(b->divetrip)) return 1; } + if (a->number < b->number) + return -1; + if (a->number > b->number) + return 1; if (a->id < b->id) return -1; if (a->id > b->id) -- cgit v1.2.3-70-g09d2