subsurface/core/selection.h
Berthold Stoeger 755f185cfc Selection: move selection of "first" dive to core
The DiveListView has a function to select the first dive. Move
this to the core to be able to call it from all parts (not only
desktop) of the code.

Currently, this has a (small?) UI regression: when filtering dives
and no selected dive is visible anymore, the old code would select
the first dive in the list. The new code selects the newest dive,
which might not be the first if some sort-criterion is active.

To revert to the old behavior, it will be necessary to move the
sorting function likewise to the core.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2019-12-04 13:00:23 +01:00

47 lines
1 KiB
C++

// SPDX-License-Identifier: GPL-2.0
// Selection related functions
#ifndef SELECTION_H
#define SELECTION_H
struct dive;
extern int amount_selected;
/*** C and C++ functions ***/
#ifdef __cplusplus
extern "C" {
#endif
extern void select_dive(struct dive *dive);
extern void deselect_dive(struct dive *dive);
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();
#if DEBUG_SELECTION_TRACKING
extern void dump_selection(void);
#endif
#ifdef __cplusplus
}
#endif
/*** C++-only functions ***/
#ifdef __cplusplus
#include <vector>
// Reset the selection to the dives of the "selection" vector and send the appropriate signals.
// Set the current dive to "currentDive". "currentDive" must be an element of "selection" (or
// null if "seletion" is empty).
void setSelection(const std::vector<dive *> &selection, dive *currentDive);
// Get currently selectd dives
std::vector<dive *> getDiveSelection();
#endif // __cplusplus
#endif // SELECTION_H