aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Berthold Stoeger <bstoeger@mail.tuwien.ac.at>2019-05-11 08:46:08 +0200
committerGravatar Dirk Hohndel <dirk@hohndel.org>2019-05-12 12:28:06 -0700
commit114b3d9d470e65c25bcb5711daf053478f30e319 (patch)
tree0d0d9d47cf972bb9c1148c3bb343b33006b80131
parente362afe43ca4144838fd544bcb048d4a033690bc (diff)
downloadsubsurface-114b3d9d470e65c25bcb5711daf053478f30e319.tar.gz
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 <bstoeger@mail.tuwien.ac.at>
-rw-r--r--CHANGELOG.md1
-rw-r--r--core/divelist.c6
2 files changed, 6 insertions, 1 deletions
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)