summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--dive.c6
-rw-r--r--dive.h2
-rw-r--r--qt-ui/simplewidgets.cpp2
3 files changed, 6 insertions, 4 deletions
diff --git a/dive.c b/dive.c
index 88233d394..38599b104 100644
--- a/dive.c
+++ b/dive.c
@@ -426,9 +426,10 @@ struct dive *clone_dive(struct dive *s)
d->_component = copy_string(s->_component)
// copy elements, depending on bits in what that are set
-void selective_copy_dive(struct dive *s, struct dive *d, struct dive_components what)
+void selective_copy_dive(struct dive *s, struct dive *d, struct dive_components what, bool clear)
{
- clear_dive(d);
+ if (clear)
+ clear_dive(d);
CONDITIONAL_COPY_STRING(location);
CONDITIONAL_COPY_STRING(notes);
CONDITIONAL_COPY_STRING(divemaster);
@@ -502,6 +503,7 @@ void copy_cylinders(struct dive *s, struct dive *d, bool used_only)
d->cylinder[i].type = s->cylinder[i].type;
d->cylinder[i].gasmix = s->cylinder[i].gasmix;
d->cylinder[i].depth = s->cylinder[i].depth;
+ d->cylinder[i].manually_added = true;
}
}
}
diff --git a/dive.h b/dive.h
index 1756f4a64..8232e5407 100644
--- a/dive.h
+++ b/dive.h
@@ -621,7 +621,7 @@ extern struct dive *alloc_dive(void);
extern void record_dive(struct dive *dive);
extern void clear_dive(struct dive *dive);
extern void copy_dive(struct dive *s, struct dive *d);
-extern void selective_copy_dive(struct dive *s, struct dive *d, struct dive_components what);
+extern void selective_copy_dive(struct dive *s, struct dive *d, struct dive_components what, bool clear);
extern struct dive *clone_dive(struct dive *s);
extern struct sample *prepare_sample(struct divecomputer *dc);
diff --git a/qt-ui/simplewidgets.cpp b/qt-ui/simplewidgets.cpp
index a10092ff6..b0b900fe4 100644
--- a/qt-ui/simplewidgets.cpp
+++ b/qt-ui/simplewidgets.cpp
@@ -450,6 +450,6 @@ void DiveComponentSelection::buttonClicked(QAbstractButton *button)
COMPONENT_FROM_UI(suit);
COMPONENT_FROM_UI(cylinders);
COMPONENT_FROM_UI(weights);
- selective_copy_dive(&displayed_dive, targetDive, *what);
+ selective_copy_dive(&displayed_dive, targetDive, *what, true);
}
}