aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Berthold Stoeger <bstoeger@mail.tuwien.ac.at>2021-01-24 08:50:10 +0100
committerGravatar Dirk Hohndel <dirk@hohndel.org>2021-04-02 13:53:23 -0700
commit1b14a211f0719aa3a46bf0584d5652bc7c7a4b6f (patch)
tree606ca1be340fbdf73aa5cf6aa6db4d564a5c6454
parent35c5ec09b7a6365241c02faf89bf9cefc1a23bf5 (diff)
downloadsubsurface-1b14a211f0719aa3a46bf0584d5652bc7c7a4b6f.tar.gz
planner: fix removal of points from DivePlannerPointsModel
The beginRemoveRows() function was fed erroneous values. It is a mystery why this didn't crash. In any case, deletion of multiple points did not work properly. Instead of trying to be fancy, remove each point one-by-one. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
-rw-r--r--qt-models/diveplannermodel.cpp8
1 files changed, 3 insertions, 5 deletions
diff --git a/qt-models/diveplannermodel.cpp b/qt-models/diveplannermodel.cpp
index 1099e6785..2f9272415 100644
--- a/qt-models/diveplannermodel.cpp
+++ b/qt-models/diveplannermodel.cpp
@@ -28,20 +28,18 @@ CylindersModel *DivePlannerPointsModel::cylindersModel()
return &cylinders;
}
-/* TODO: Port this to CleanerTableModel to remove a bit of boilerplate. */
void DivePlannerPointsModel::removeSelectedPoints(const QVector<int> &rows)
{
if (!rows.count())
return;
- int firstRow = rowCount() - rows.count();
QVector<int> v2 = rows;
std::sort(v2.begin(), v2.end());
- beginRemoveRows(QModelIndex(), firstRow, rowCount() - 1);
for (int i = v2.count() - 1; i >= 0; i--) {
- divepoints.remove(v2[i]);
+ beginRemoveRows(QModelIndex(), v2[i], v2[i]);
+ divepoints.erase(divepoints.begin() + v2[i]);
+ endRemoveRows();
}
- endRemoveRows();
cylinders.updateTrashIcon();
}