From ba5079a489525b3c3e446b1b5fff8f7ca98e97f3 Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Sun, 11 Nov 2012 11:00:27 +0100 Subject: Fix selection and trip expansion logic after merging dives This just makes sure that the merged dive is properly selected, and that we've saved the trip tree state so that the dive list repaints nicely and with the newly merged dive selected after the merge. Signed-off-by: Linus Torvalds Signed-off-by: Dirk Hohndel --- dive.c | 1 + divelist.c | 3 +++ 2 files changed, 4 insertions(+) diff --git a/dive.c b/dive.c index f7c5d99c6..295d14ae5 100644 --- a/dive.c +++ b/dive.c @@ -1051,6 +1051,7 @@ struct dive *merge_dives(struct dive *a, struct dive *b, int offset) struct dive *res = alloc_dive(); res->when = a->when; + res->selected = a->selected || b->selected; merge_trip(res, a, b); MERGE_NONZERO(res, a, b, latitude); MERGE_NONZERO(res, a, b, longitude); diff --git a/divelist.c b/divelist.c index 8dab5b4cb..fd55dcd60 100644 --- a/divelist.c +++ b/divelist.c @@ -1938,6 +1938,8 @@ void add_single_dive(int idx, struct dive *dive) { int i; dive_table.nr++; + if (dive->selected) + amount_selected++; for (i = idx; i < dive_table.nr ; i++) { struct dive *tmp = dive_table.dives[i]; dive_table.dives[i] = dive; @@ -2090,6 +2092,7 @@ static void merge_dive_index(int i, struct dive *a) if (!res) return; + remember_tree_state(); add_single_dive(i, res); delete_single_dive(i+1); delete_single_dive(i+1); -- cgit v1.2.3-70-g09d2