diff options
author | Dirk Hohndel <dirk@hohndel.org> | 2013-09-22 22:24:28 -0700 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2013-09-22 22:24:28 -0700 |
commit | dba16202c498d4432bc20181b0084f54b7abdba1 (patch) | |
tree | 1d7153e619313453e7f57142620ad3f1fa454284 /qt-ui/divelistview.cpp | |
parent | 6ce5704435a761aeb7a8b7cb7bc9049ed3ee4ac9 (diff) | |
download | subsurface-dba16202c498d4432bc20181b0084f54b7abdba1.tar.gz |
Correctly handle empty dive list after delete
Things need to be cleared out and disabled. But fixing this bug leaves
another issue - while the newly selected dive after a delete acts as if it
was selected, it doesn't show up as selected in the dive list.
Reported-by: Henrik Brautaset Aronsen <subsurface@henrik.synth.no>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'qt-ui/divelistview.cpp')
-rw-r--r-- | qt-ui/divelistview.cpp | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/qt-ui/divelistview.cpp b/qt-ui/divelistview.cpp index 2e40678ad..639e988fd 100644 --- a/qt-ui/divelistview.cpp +++ b/qt-ui/divelistview.cpp @@ -7,6 +7,7 @@ #include "divelistview.h" #include "models.h" #include "modeldelegates.h" +#include "mainwindow.h" #include "../display.h" #include <QApplication> #include <QHeaderView> @@ -72,7 +73,7 @@ void DiveListView::selectDive(struct dive *dive, bool scrollto, bool toggle) expand(parent); flags = toggle ? QItemSelectionModel::Toggle : QItemSelectionModel::Select; flags |= QItemSelectionModel::Rows; - selectionModel()->select( idx, flags); + selectionModel()->select(idx, flags); if (scrollto) scrollTo(idx, PositionAtCenter); } @@ -330,9 +331,19 @@ void DiveListView::removeFromTrip() void DiveListView::deleteDive() { + int nr; struct dive *d = (struct dive *) contextMenuIndex.data(DiveTripModel::DIVE_ROLE).value<void*>(); - if (d) + if (d) { + nr = get_divenr(d); delete_single_dive(get_index_for_dive(d)); + if (amount_selected == 0) { + if (nr > 0) + select_dive(nr - 1); + else + mainWindow()->cleanUpEmpty(); + } + } + mainWindow()->refreshDisplay(); reload(currentLayout, false); } |