From 0d98da52610161ecbafd50afacbff20996756264 Mon Sep 17 00:00:00 2001 From: Berthold Stoeger Date: Wed, 1 Aug 2018 10:47:09 +0200 Subject: Dive list: remember selected dives Don't delesect dives, when unregistering them from the backend. If a previously selected dive is added, select it in the dive-list. For this purpose introduce a SELECTED_ROLE to query the DiveTripModel for selected dives. Unfortunately, when adding multiple selected dives, current_dive_changed is called for each of them, making this very slow. This will have to be fixed in subsequent commits. Signed-off-by: Berthold Stoeger --- core/divelist.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'core') diff --git a/core/divelist.c b/core/divelist.c index 902bbb5ac..1c6ad9fc0 100644 --- a/core/divelist.c +++ b/core/divelist.c @@ -1065,9 +1065,9 @@ struct dive *unregister_dive(int idx) if (!dive) return NULL; /* this should never happen */ remove_dive_from_trip(dive, false); - if (dive->selected) - deselect_dive(idx); unregister_dive_from_table(&dive_table, idx); + if (dive->selected) + amount_selected--; return dive; } @@ -1075,7 +1075,12 @@ struct dive *unregister_dive(int idx) * but doesn't deal with updating dive trips, etc */ void delete_single_dive(int idx) { - struct dive *dive = unregister_dive(idx); + struct dive *dive = get_dive(idx); + if (!dive) + return; /* this should never happen */ + if (dive->selected) + deselect_dive(idx); + dive = unregister_dive(idx); free_dive(dive); } -- cgit v1.2.3-70-g09d2