diff options
author | Berthold Stoeger <bstoeger@mail.tuwien.ac.at> | 2019-12-06 09:47:59 +0100 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2019-12-07 10:23:44 -0800 |
commit | f4f9ba9263c97a7c7612b68711a6c92c70d8721a (patch) | |
tree | 75d98986df501597c16e3b44117518190cb06862 /core | |
parent | 84394adb11736de0fa37f7dfb7cf426fcd8f26f5 (diff) | |
download | subsurface-f4f9ba9263c97a7c7612b68711a6c92c70d8721a.tar.gz |
Selection: provide convenience function for single-dive selection
Currently, selecting a single dive or deselecting all dives was
quite awkward: One had to pass in a single-dive vector and the
dive itself (as current dive). Provide a convenience function
that selects a single dive or deselects all dives if null is
passed in.
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Diffstat (limited to 'core')
-rw-r--r-- | core/selection.cpp | 12 | ||||
-rw-r--r-- | core/selection.h | 1 |
2 files changed, 11 insertions, 2 deletions
diff --git a/core/selection.cpp b/core/selection.cpp index 6b5dfe726..7bddd86ee 100644 --- a/core/selection.cpp +++ b/core/selection.cpp @@ -195,6 +195,14 @@ void setSelection(const std::vector<dive *> &selection, dive *currentDive) emit diveListNotifier.divesSelected(divesToSelect, current_dive); } +extern "C" void select_single_dive(dive *d) +{ + if (d) + setSelection(std::vector<dive *>{ d }, d); + else + setSelection(std::vector<dive *>(), nullptr); +} + // Turn current selection into a vector. // TODO: This could be made much more efficient if we kept a sorted list of selected dives! std::vector<dive *> getDiveSelection() @@ -217,9 +225,9 @@ extern "C" void select_newest_visible_dive() for (int i = dive_table.nr - 1; i >= 0; --i) { dive *d = dive_table.dives[i]; if (!d->hidden_by_filter) - return setSelection({ d }, d); + return select_single_dive(d); } // No visible dive -> deselect all - setSelection({}, nullptr); + select_single_dive(nullptr); } diff --git a/core/selection.h b/core/selection.h index a390f0dd7..8fe5707ce 100644 --- a/core/selection.h +++ b/core/selection.h @@ -20,6 +20,7 @@ extern struct dive *first_selected_dive(void); extern struct dive *last_selected_dive(void); extern bool consecutive_selected(void); extern void select_newest_visible_dive(); +extern void select_single_dive(struct dive *d); // wrapper for setSelection() with a single dive. NULL clears the selection. #if DEBUG_SELECTION_TRACKING extern void dump_selection(void); |