Selects the dive before the deleted ones.

This patch makes a selection just after the dives that got deleted,
or nothing if the list is empty.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Tomaz Canabrava 2013-11-16 18:52:14 -02:00 committed by Dirk Hohndel
parent 73cd8f3e56
commit 8476ea5ea8

View file

@ -473,12 +473,14 @@ void DiveListView::deleteDive()
// after a dive is deleted the ones following it move forward in the dive_table // 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 // so instead of using the for_each_dive macro I'm using an explicit for loop
// to make this easier to understand // to make this easier to understand
int lastDiveNr = -1;
for (i = 0; i < dive_table.nr; i++) { for (i = 0; i < dive_table.nr; i++) {
d = get_dive(i); d = get_dive(i);
if (!d->selected) if (!d->selected)
continue; continue;
delete_single_dive(i); delete_single_dive(i);
i--; // so the next dive isn't skipped... it's now #i i--; // so the next dive isn't skipped... it's now #i
lastDiveNr = i;
} }
if (amount_selected == 0) { if (amount_selected == 0) {
if (i > 0) if (i > 0)
@ -488,6 +490,11 @@ void DiveListView::deleteDive()
} }
mark_divelist_changed(TRUE); mark_divelist_changed(TRUE);
mainWindow()->refreshDisplay(); mainWindow()->refreshDisplay();
if(lastDiveNr != -1){
clearSelection();
selectDive(lastDiveNr);
rememberSelection();
}
} }
void DiveListView::testSlot() void DiveListView::testSlot()