summaryrefslogtreecommitdiffstats
path: root/commands/command_edit.cpp
diff options
context:
space:
mode:
authorGravatar Berthold Stoeger <bstoeger@mail.tuwien.ac.at>2020-02-23 19:24:06 +0100
committerGravatar Berthold Stoeger <bstoeger@mail.tuwien.ac.at>2020-04-07 00:13:35 +0200
commit5b7a3165932d9b3fced80fec17de01eb1ad89bf7 (patch)
tree8d93ac1a2201f3051cddca19656c3abd92b47886 /commands/command_edit.cpp
parenta37939889b1a77dd269fd7f25f97b813f733133a (diff)
downloadsubsurface-5b7a3165932d9b3fced80fec17de01eb1ad89bf7.tar.gz
undo: reorder cylinders on remove-cylinder undo/redo
The cylinders in the events must be reordered if we remove a cylinder. To avoid duplication of code, move the reordering function into qthelper.cpp, though it might not be ideal there. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Diffstat (limited to 'commands/command_edit.cpp')
-rw-r--r--commands/command_edit.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/commands/command_edit.cpp b/commands/command_edit.cpp
index c06ef1ffa..3ba7a2823 100644
--- a/commands/command_edit.cpp
+++ b/commands/command_edit.cpp
@@ -1106,6 +1106,7 @@ RemoveCylinder::RemoveCylinder(int index, bool currentDiveOnly) :
void RemoveCylinder::undo()
{
for (size_t i = 0; i < dives.size(); ++i) {
+ std::vector<int> mapping = get_cylinder_map_for_add(dives[i]->cylinders.nr, indexes[i]);
add_to_cylinder_table(&dives[i]->cylinders, indexes[i], clone_cylinder(cyl));
emit diveListNotifier.cylinderAdded(dives[i], indexes[i]);
}
@@ -1114,7 +1115,9 @@ void RemoveCylinder::undo()
void RemoveCylinder::redo()
{
for (size_t i = 0; i < dives.size(); ++i) {
+ std::vector<int> mapping = get_cylinder_map_for_remove(dives[i]->cylinders.nr, indexes[i]);
remove_cylinder(dives[i], indexes[i]);
+ cylinder_renumber(dives[i], &mapping[0]);
emit diveListNotifier.cylinderRemoved(dives[i], indexes[i]);
}
}