mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
selection: introduce clear_selection() function
The DiveListView would touch the selection-innards directly. Let's encapsulate that. Moreover, take care to reset the trip selection when resetting the core data. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
parent
09b7fcbcf4
commit
f961ec7a8b
4 changed files with 16 additions and 12 deletions
|
@ -1354,6 +1354,7 @@ int get_dive_id_closest_to(timestamp_t when)
|
||||||
void clear_dive_file_data()
|
void clear_dive_file_data()
|
||||||
{
|
{
|
||||||
fulltext_unregister_all();
|
fulltext_unregister_all();
|
||||||
|
clear_selection();
|
||||||
|
|
||||||
while (dive_table.nr)
|
while (dive_table.nr)
|
||||||
delete_single_dive(0);
|
delete_single_dive(0);
|
||||||
|
|
|
@ -253,3 +253,16 @@ extern "C" void deselect_trip(struct dive_trip *trip)
|
||||||
amount_trips_selected--;
|
amount_trips_selected--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extern "C" void clear_selection(void)
|
||||||
|
{
|
||||||
|
current_dive = nullptr;
|
||||||
|
amount_selected = 0;
|
||||||
|
amount_trips_selected = 0;
|
||||||
|
int i;
|
||||||
|
struct dive *dive;
|
||||||
|
for_each_dive (i, dive)
|
||||||
|
dive->selected = false;
|
||||||
|
for (int i = 0; i < trip_table.nr; ++i)
|
||||||
|
trip_table.trips[i]->selected = false;
|
||||||
|
}
|
||||||
|
|
|
@ -23,6 +23,7 @@ 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.
|
extern void select_single_dive(struct dive *d); // wrapper for setSelection() with a single dive. NULL clears the selection.
|
||||||
extern void select_trip(struct dive_trip *trip);
|
extern void select_trip(struct dive_trip *trip);
|
||||||
extern void deselect_trip(struct dive_trip *trip);
|
extern void deselect_trip(struct dive_trip *trip);
|
||||||
|
extern void clear_selection(void);
|
||||||
|
|
||||||
#if DEBUG_SELECTION_TRACKING
|
#if DEBUG_SELECTION_TRACKING
|
||||||
extern void dump_selection(void);
|
extern void dump_selection(void);
|
||||||
|
|
|
@ -292,20 +292,9 @@ void DiveListView::selectTrip(dive_trip_t *trip)
|
||||||
|
|
||||||
void DiveListView::unselectDives()
|
void DiveListView::unselectDives()
|
||||||
{
|
{
|
||||||
// make sure we don't try to redraw the dives during the selection change
|
clear_selection();
|
||||||
current_dive = nullptr;
|
|
||||||
amount_selected = 0;
|
|
||||||
// clear the Qt selection
|
// clear the Qt selection
|
||||||
selectionModel()->clearSelection();
|
selectionModel()->clearSelection();
|
||||||
// clearSelection should emit selectionChanged() but sometimes that
|
|
||||||
// appears not to happen
|
|
||||||
// since we are unselecting all dives there is no need to use deselect_dive() - that
|
|
||||||
// would only cause pointless churn
|
|
||||||
int i;
|
|
||||||
struct dive *dive;
|
|
||||||
for_each_dive (i, dive) {
|
|
||||||
dive->selected = false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// This function returns a trip if there is one selected trip or NULL.
|
// This function returns a trip if there is one selected trip or NULL.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue