mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
selection: create global single_selected_trip() function
The DiveListView had a singleSelectedTrip function that returns the selected trip if exactly one trip is selected. This could be very slow if numerous non-trip items were selected, because all the selection indices were back- translated by the proxy model. This could make selection changes very slow, because the MainTab used said function to determine whether it should show trip or dive data.. Indeed, with a 3500 dive test log, when selecting all dives in tree mode, the updating of the TabWidgets is sped up from 130 ms to 5 ms this commit. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
parent
5147131701
commit
769915f3fe
5 changed files with 17 additions and 23 deletions
|
@ -365,7 +365,8 @@ 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 ((currentTrip = MainWindow::instance()->diveList->singleSelectedTrip()) != nullptr) {
|
||||
currentTrip = single_selected_trip();
|
||||
if (currentTrip) {
|
||||
// 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();
|
||||
|
@ -412,7 +413,6 @@ void MainTab::updateDiveInfo()
|
|||
if (!lastSelectedDive && !onDiveSiteTab)
|
||||
ui.tabWidget->setCurrentIndex(lastTabSelectedDive);
|
||||
lastSelectedDive = true;
|
||||
currentTrip = NULL;
|
||||
// make all the fields visible writeable
|
||||
ui.diveTripLocation->hide();
|
||||
ui.location->show();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue