summaryrefslogtreecommitdiffstats
path: root/qt-ui/divelistview.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'qt-ui/divelistview.cpp')
-rw-r--r--qt-ui/divelistview.cpp28
1 files changed, 13 insertions, 15 deletions
diff --git a/qt-ui/divelistview.cpp b/qt-ui/divelistview.cpp
index da4229de8..7689f06a9 100644
--- a/qt-ui/divelistview.cpp
+++ b/qt-ui/divelistview.cpp
@@ -495,25 +495,23 @@ void DiveListView::deleteDive()
struct dive *d = (struct dive *) contextMenuIndex.data(DiveTripModel::DIVE_ROLE).value<void*>();
if (!d)
return;
- // after a dive is deleted the ones following it move forward in the dive_table
- // so instead of using the for_each_dive macro I'm using an explicit for loop
- // to make this easier to understand
- for (i = 0; i < dive_table.nr; i++) {
- d = get_dive(i);
- if (!d->selected)
- continue;
- delete_single_dive(i);
- i--; // so the next dive isn't skipped... it's now #i
- }
+
+ QSortFilterProxyModel *proxy = qobject_cast<QSortFilterProxyModel*>(model());
+ DiveTripModel *realModel = qobject_cast<DiveTripModel*>(proxy->sourceModel());
+ realModel->deleteSelectedDives();
+
+ struct dive* next_dive = 0;
if (amount_selected == 0) {
- if (i > 0)
- select_dive(nr - 1);
- else
+ if (i > 0){
+ next_dive = get_dive(nr -1);
+ }
+ else{
mainWindow()->cleanUpEmpty();
+ }
}
mark_divelist_changed(TRUE);
- mainWindow()->refreshDisplay();
- reload(currentLayout, false);
+ if (next_dive)
+ selectDive(next_dive);
}
void DiveListView::testSlot()