diff options
author | Berthold Stoeger <bstoeger@mail.tuwien.ac.at> | 2018-07-28 21:26:59 +0200 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2018-10-11 16:22:27 -0700 |
commit | 6ac4ddbeeda5286faacac9633b622dcf298eea7b (patch) | |
tree | 93a3e8ad8388e18866477168688a6162a469e9e0 /desktop-widgets/command_divelist.cpp | |
parent | 43c3885249fb867e7c33c8b3b5846d44e908774f (diff) | |
download | subsurface-6ac4ddbeeda5286faacac9633b622dcf298eea7b.tar.gz |
Core: introduce insert_trip_dont_merge() function
insert_trip() adds a trip to the backend, but merges trips if
there exists a trip with the same date. This is a disaster
for the MergeTrips command, because this command adds a new
trip and removes the previous two. Of course if the added trip
is merged, this cannot work.
Therefore, add an insert_trip_dont_merge() function, which
adds the trip, but doesn't merge.
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Diffstat (limited to 'desktop-widgets/command_divelist.cpp')
-rw-r--r-- | desktop-widgets/command_divelist.cpp | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/desktop-widgets/command_divelist.cpp b/desktop-widgets/command_divelist.cpp index d12aebfc2..f0c0a82e2 100644 --- a/desktop-widgets/command_divelist.cpp +++ b/desktop-widgets/command_divelist.cpp @@ -34,10 +34,8 @@ static DiveToAdd removeDive(struct dive *d) // Returns pointer to added dive (which is owned by the backend!) static dive *addDive(DiveToAdd &d) { - if (d.tripToAdd) { - dive_trip *t = d.tripToAdd.release(); // Give up ownership of trip - insert_trip(&t); // Return ownership to backend - } + if (d.tripToAdd) + insert_trip_dont_merge(d.tripToAdd.release()); // Return ownership to backend if (d.trip) add_dive_to_trip(d.dive.get(), d.trip); dive *res = d.dive.release(); // Give up ownership of dive @@ -124,10 +122,8 @@ static OwningTripPtr moveDiveToTrip(DiveToTrip &diveToTrip) static void moveDivesBetweenTrips(DivesToTrip &dives) { // first bring back the trip(s) - for (OwningTripPtr &trip: dives.tripsToAdd) { - dive_trip *t = trip.release(); // Give up ownership - insert_trip(&t); // Return ownership to backend - } + for (OwningTripPtr &trip: dives.tripsToAdd) + insert_trip_dont_merge(trip.release()); // Return ownership to backend dives.tripsToAdd.clear(); for (DiveToTrip &dive: dives.divesToMove) { |