diff options
Diffstat (limited to 'desktop-widgets')
-rw-r--r-- | desktop-widgets/divelistview.cpp | 11 | ||||
-rw-r--r-- | desktop-widgets/mapwidget.cpp | 6 |
2 files changed, 8 insertions, 9 deletions
diff --git a/desktop-widgets/divelistview.cpp b/desktop-widgets/divelistview.cpp index 86da4ba1a..c98338061 100644 --- a/desktop-widgets/divelistview.cpp +++ b/desktop-widgets/divelistview.cpp @@ -277,9 +277,7 @@ void DiveListView::restoreSelection() return; selectionSaved = false; - dontEmitDiveChangedSignal = true; - unselectDives(); - dontEmitDiveChangedSignal = false; + QList<int> divesToSelect; Q_FOREACH (dive_trip_t *trip, selectedDives.keys()) { QList<int> divesOnTrip = getDivesInTrip(trip); QList<int> selectedDivesOnTrip = selectedDives.values(trip); @@ -289,8 +287,9 @@ void DiveListView::restoreSelection() selectTrip(trip); selectedDivesOnTrip.removeAll(-1); } - selectDives(selectedDivesOnTrip); + divesToSelect += selectedDivesOnTrip; } + selectDives(divesToSelect); } // This is a bit ugly: we hook directly into the tripChanged signal to @@ -417,6 +416,10 @@ void DiveListView::selectDives(const QList<int> &newDiveSelection) return; dontEmitDiveChangedSignal = true; + + // First, clear the old selection + unselectDives(); + // select the dives, highest index first - this way the oldest of the dives // becomes the selected_dive that we scroll to QList<int> sortedSelection = newDiveSelection; diff --git a/desktop-widgets/mapwidget.cpp b/desktop-widgets/mapwidget.cpp index 81f9f9419..11e6425b1 100644 --- a/desktop-widgets/mapwidget.cpp +++ b/desktop-widgets/mapwidget.cpp @@ -105,11 +105,7 @@ void MapWidget::prepareForGetDiveCoordinates(struct dive_site *ds) void MapWidget::selectedDivesChanged(const QList<int> &list) { CHECK_IS_READY_RETURN_VOID(); - skipReload = true; - MainWindow::instance()->diveList->unselectDives(); - if (!list.empty()) - MainWindow::instance()->diveList->selectDives(list); - skipReload = false; + MainWindow::instance()->diveList->selectDives(list); } void MapWidget::coordinatesChanged(struct dive_site *ds, const location_t &location) |