From 96d2e578431dab460e62c2241f4b89d553084a49 Mon Sep 17 00:00:00 2001 From: Stefan Fuchs Date: Fri, 20 Oct 2017 16:54:14 +0200 Subject: When removing a cylinder completely fill the mapping table When deleting a cylinder the mapping was not filled with all necessary values. Values for cylinders before deleted cylinder were missing. Plus do the endRemoveRows at the right time. Signed-off-by: Stefan Fuchs --- qt-models/cylindermodel.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'qt-models/cylindermodel.cpp') diff --git a/qt-models/cylindermodel.cpp b/qt-models/cylindermodel.cpp index cda27ebaf..854c148f3 100644 --- a/qt-models/cylindermodel.cpp +++ b/qt-models/cylindermodel.cpp @@ -563,6 +563,8 @@ void CylindersModel::remove(const QModelIndex &index) // as first gas memmove(cyl, &displayed_dive.cylinder[same_gas], sizeof(*cyl)); remove_cylinder(&displayed_dive, same_gas); + for (int i = 0; i < same_gas - 1; i++) + mapping[i] = i; mapping[same_gas] = 0; for (int i = same_gas + 1; i < MAX_CYLINDERS; i++) mapping[i] = i - 1; @@ -570,15 +572,17 @@ void CylindersModel::remove(const QModelIndex &index) remove_cylinder(&displayed_dive, index.row()); if (same_gas > index.row()) same_gas--; + for (int i = 0; i < index.row(); i++) + mapping[i] = i; mapping[index.row()] = same_gas; for (int i = index.row() + 1; i < MAX_CYLINDERS; i++) mapping[i] = i - 1; } - changed = true; - endRemoveRows(); cylinder_renumber(&displayed_dive, mapping); if (in_planner()) DivePlannerPointsModel::instance()->cylinderRenumber(mapping); + changed = true; + endRemoveRows(); dataChanged(index, index); } @@ -597,11 +601,11 @@ void CylindersModel::moveAtFirst(int cylid) mapping[cylid] = 0; for (int i = cylid + 1; i < MAX_CYLINDERS; i++) mapping[i] = i; - changed = true; - endMoveRows(); cylinder_renumber(&displayed_dive, mapping); if (in_planner()) DivePlannerPointsModel::instance()->cylinderRenumber(mapping); + changed = true; + endMoveRows(); } void CylindersModel::updateDecoDepths(pressure_t olddecopo2) -- cgit v1.2.3-70-g09d2