mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-30 22:20:21 +00:00
Change semantic for editing cylinders for multiple dives
Instead of trying to find matching cylinders, trigger on the cylinder number first and then only edit that n-th cylinder if it matches the one in the current dive. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
19b221d203
commit
3629a87fcc
2 changed files with 12 additions and 4 deletions
|
@ -1,3 +1,4 @@
|
|||
- core: when modifying cylinders across multiple dives, match cylinder number before comparing type
|
||||
- core: merge all properties in a dive, including current, waveheight, etc
|
||||
- core: prevent crash when merging dives without cylinders (as we might get when importing from divelogs.de)
|
||||
- core: work around bug in TecDiving dive computer reporting spurious 0 deg C water temperature in first sample
|
||||
|
|
|
@ -1222,12 +1222,19 @@ EditCylinderBase::EditCylinderBase(int index, bool currentDiveOnly, bool nonProt
|
|||
cyl.reserve(dives.size());
|
||||
|
||||
for (dive *d: dives) {
|
||||
int idx = d == current ? index : find_cylinder_index(d, orig, sameCylinderFlags);
|
||||
if (idx < 0 || (nonProtectedOnly && is_cylinder_prot(d, idx)))
|
||||
if (nonProtectedOnly && is_cylinder_prot(d, index))
|
||||
continue;
|
||||
if (d != current &&
|
||||
(!same_cylinder_size(orig, *get_cylinder(d, index)) || !same_cylinder_type(orig, *get_cylinder(d, index))))
|
||||
// when editing cylinders, we assume that the user wanted to edit the 'n-th' cylinder
|
||||
// and we only do edit that cylinder, if it was the same type as the one in the current dive
|
||||
continue;
|
||||
|
||||
divesNew.push_back(d);
|
||||
indexes.push_back(idx);
|
||||
cyl.push_back(clone_cylinder(*get_cylinder(d, idx)));
|
||||
// that's silly as it's always the same value - but we need this vector of indices in the case where we add
|
||||
// a cylinder to several dives as the spot will potentially be different in different dives
|
||||
indexes.push_back(index);
|
||||
cyl.push_back(clone_cylinder(*get_cylinder(d, index)));
|
||||
}
|
||||
dives = std::move(divesNew);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue