summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/dive.c21
-rw-r--r--core/dive.h1
-rw-r--r--core/divelist.c3
-rw-r--r--core/parse.c4
4 files changed, 11 insertions, 18 deletions
diff --git a/core/dive.c b/core/dive.c
index d6fba1714..22f88d43f 100644
--- a/core/dive.c
+++ b/core/dive.c
@@ -2578,24 +2578,21 @@ static const struct dive *get_preferred_trip(const struct dive *a, const struct
{
dive_trip_t *atrip, *btrip;
- /*
- * The larger tripflag is more relevant: we prefer
- * take manually assigned trips over auto-generated
- * ones.
- */
- if (a->tripflag > b->tripflag)
- return a;
-
- if (a->tripflag < b->tripflag)
- return b;
-
- /* Otherwise, look at the trip data and pick the "better" one */
+ /* If only one dive has a trip, choose that */
atrip = a->divetrip;
btrip = b->divetrip;
if (!atrip)
return b;
if (!btrip)
return a;
+
+ /* Both dives have a trip - prefer the non-autogenerated one */
+ if (atrip->autogen && !btrip->autogen)
+ return b;
+ if (!atrip->autogen && btrip->autogen)
+ return a;
+
+ /* Otherwise, look at the trip data and pick the "better" one */
if (!atrip->location)
return b;
if (!btrip->location)
diff --git a/core/dive.h b/core/dive.h
index ef02d3ce6..cc21c3447 100644
--- a/core/dive.h
+++ b/core/dive.h
@@ -282,7 +282,6 @@ typedef enum {
TF_NONE,
NO_TRIP,
IN_TRIP,
- ASSIGNED_TRIP,
NUM_TRIPFLAGS
} tripflag_t;
diff --git a/core/divelist.c b/core/divelist.c
index 7f946b039..f887cc82c 100644
--- a/core/divelist.c
+++ b/core/divelist.c
@@ -896,7 +896,7 @@ void add_dive_to_trip(struct dive *dive, dive_trip_t *trip)
remove_dive_from_trip(dive, false);
add_dive_to_table(&trip->dives, -1, dive);
dive->divetrip = trip;
- dive->tripflag = ASSIGNED_TRIP;
+ dive->tripflag = IN_TRIP;
}
dive_trip_t *alloc_trip(void)
@@ -921,7 +921,6 @@ dive_trip_t *create_and_hookup_trip_from_dive(struct dive *dive)
dive_trip = create_trip_from_dive(dive);
insert_trip(dive_trip);
- dive->tripflag = IN_TRIP;
add_dive_to_trip(dive, dive_trip);
return dive_trip;
}
diff --git a/core/parse.c b/core/parse.c
index 6f12736a8..8683daed4 100644
--- a/core/parse.c
+++ b/core/parse.c
@@ -254,10 +254,8 @@ void dive_end(struct parser_state *state)
free_dive(state->cur_dive);
else
record_dive_to_table(state->cur_dive, state->target_table);
- if (state->cur_trip) {
+ if (state->cur_trip)
add_dive_to_trip(state->cur_dive, state->cur_trip);
- state->cur_dive->tripflag = IN_TRIP;
- }
state->cur_dive = NULL;
state->cur_dc = NULL;
state->cur_location.lat.udeg = 0;