summaryrefslogtreecommitdiffstats
path: root/desktop-widgets/command_private.h
diff options
context:
space:
mode:
authorGravatar Berthold Stoeger <bstoeger@mail.tuwien.ac.at>2019-06-08 13:38:31 +0200
committerGravatar Dirk Hohndel <dirk@hohndel.org>2019-06-19 13:11:10 -0700
commit12a13d722a914240bb553e0dad3e182ae371a45a (patch)
treeb84cbd1ec844d3ebc9a7559e54cb8f1d97e6964e /desktop-widgets/command_private.h
parent38ba434966409987e5dfb894c27c8c03168cfdc6 (diff)
downloadsubsurface-12a13d722a914240bb553e0dad3e182ae371a45a.tar.gz
Undo: sort dives by dive_less_than() in signals
In signals dives were sorted by date. This criterion is not be unique. Therefore sort by the dive_less_than() function of the core to avoid any inconsistencies between the Qt-models and the core data. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Diffstat (limited to 'desktop-widgets/command_private.h')
-rw-r--r--desktop-widgets/command_private.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/desktop-widgets/command_private.h b/desktop-widgets/command_private.h
index a75ff9bba..1207e326f 100644
--- a/desktop-widgets/command_private.h
+++ b/desktop-widgets/command_private.h
@@ -15,6 +15,7 @@ namespace Command {
// Generally, signals are sent in batches per trip. To avoid writing the same loop
// again and again, this template takes a vector of trip / dive pairs, sorts it
// by trip and then calls a function-object with trip and a QVector of dives in that trip.
+// The dives are sorted by the dive_less_than() function defined in the core.
// Input parameters:
// - dives: a vector of trip,dive pairs, which will be sorted and processed in batches by trip.
// - action: a function object, taking a trip-pointer and a QVector of dives, which will be called for each batch.
@@ -24,7 +25,7 @@ void processByTrip(std::vector<std::pair<dive_trip *, dive *>> &dives, Function
// Use std::tie for lexicographical sorting of trip, then start-time
std::sort(dives.begin(), dives.end(),
[](const std::pair<dive_trip *, dive *> &e1, const std::pair<dive_trip *, dive *> &e2)
- { return std::tie(e1.first, e1.second->when) < std::tie(e2.first, e2.second->when); });
+ { return e1.first == e2.first ? dive_less_than(e1.second, e2.second) : e1.first < e2.first; });
// Then, process the dives in batches by trip
size_t i, j; // Begin and end of batch