mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
selection: replace selectedTrips() by singleSelectedTrip() function
To check wether the tab widgets should show the trip view, they called the selectedTrips() function. The trip view was shown if that contained only one trip. However, the selectedTrips() function was very slow, because it has to query to core models. Change the function to singleSelectedTrip(), which returns a trip if there is exactly one trip selected. The function returns early if there is more than one trip selected. This makes the select-all case much faster. There are two cases which are still very slow: - List mode, because here all top-level items are queried. - Dive log with many only top-level items. Ultimately, we will have to cache the trip selection because querying the model is too slow. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
parent
6e83135fba
commit
2021035cfc
3 changed files with 15 additions and 12 deletions
|
@ -365,8 +365,7 @@ void MainTab::updateDiveInfo()
|
|||
// 2) the filter is reset, potentially erasing the current trip under our feet.
|
||||
// TODO: Don't hard code tab location!
|
||||
bool onDiveSiteTab = ui.tabWidget->currentIndex() == 6;
|
||||
if (MainWindow::instance() && MainWindow::instance()->diveList->selectedTrips().count() == 1) {
|
||||
currentTrip = MainWindow::instance()->diveList->selectedTrips().front();
|
||||
if (dive_trip *currentTrip = MainWindow::instance()->diveList->singleSelectedTrip()) {
|
||||
// Remember the tab selected for last dive but only if we're not on the dive site tab
|
||||
if (lastSelectedDive && !onDiveSiteTab)
|
||||
lastTabSelectedDive = ui.tabWidget->currentIndex();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue