diff options
author | Berthold Stoeger <bstoeger@mail.tuwien.ac.at> | 2019-11-13 20:53:10 +0100 |
---|---|---|
committer | bstoeger <32835590+bstoeger@users.noreply.github.com> | 2019-11-14 09:37:27 +0100 |
commit | b43ecdad4ed956a3075ecb55aed4497217d011d9 (patch) | |
tree | f37a0406a16eb93399cc706456dbfa3fa408f658 | |
parent | 8db3e5cd59514db8ed4521fa767f482de83c4815 (diff) | |
download | subsurface-b43ecdad4ed956a3075ecb55aed4497217d011d9.tar.gz |
Undo: don't delete dive sites when pasting dives
We used to only keep sites with dives around. This changed when
implementing the dive site tab. The paste-dive code was written
using the old semantics and thus, when overwriting dive sites,
it deleted unused dive sites.
To make things consistent, remove that code. It would be very
weird when dive sites are deleted by pasting, but not by setting
a different dive site manually.
Bonus: no more dependencies on desktop-includes in the undo code.
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
-rw-r--r-- | desktop-widgets/command_edit.cpp | 31 | ||||
-rw-r--r-- | desktop-widgets/command_edit.h | 1 |
2 files changed, 0 insertions, 32 deletions
diff --git a/desktop-widgets/command_edit.cpp b/desktop-widgets/command_edit.cpp index 97fc05c95..638bfb792 100644 --- a/desktop-widgets/command_edit.cpp +++ b/desktop-widgets/command_edit.cpp @@ -6,7 +6,6 @@ #include "core/qthelper.h" // for copy_qstring #include "core/subsurface-string.h" #include "core/tag.h" -#include "desktop-widgets/mapwidget.h" // TODO: Replace desktop-dependency by signal namespace Command { @@ -752,15 +751,6 @@ bool PasteDives::workToBeDone() void PasteDives::undo() { - bool diveSiteListChanged = false; - - // If we had taken ownership of dive sites, readd them to the system - for (OwningDiveSitePtr &ds: ownedDiveSites) { - register_dive_site(ds.release()); - diveSiteListChanged = true; - } - ownedDiveSites.clear(); - QVector<dive *> divesToNotify; // Remember dives so that we can send signals later divesToNotify.reserve(dives.size()); for (PasteState &state: dives) { @@ -769,24 +759,6 @@ void PasteDives::undo() invalidate_dive_cache(state.d); // Ensure that dive is written in git_save() } - // If dive sites were pasted, collect all overwritten dive sites - // and remove those which don't have users anymore from the core. - // But keep an owning pointer. Thus if this undo command is freed, the - // dive-site will be automatically deleted and on redo() it can be - // readded to the system - if (what.divesite) { - std::vector<dive_site *> divesites; - for (const PasteState &d: dives) { - if (std::find(divesites.begin(), divesites.end(), d.divesite) == divesites.end()) - divesites.push_back(d.divesite); - } - for (dive_site *ds: divesites) { - unregister_dive_site(ds); - ownedDiveSites.emplace_back(ds); - diveSiteListChanged = true; - } - } - // Send signals. DiveField fields(DiveField::NONE); fields.notes = what.notes; @@ -802,9 +774,6 @@ void PasteDives::undo() emit diveListNotifier.cylindersReset(divesToNotify); if (what.weights) emit diveListNotifier.weightsystemsReset(divesToNotify); - - if (diveSiteListChanged) - MapWidget::instance()->reload(); } // Redo and undo do the same diff --git a/desktop-widgets/command_edit.h b/desktop-widgets/command_edit.h index 45fde9e59..8532523e2 100644 --- a/desktop-widgets/command_edit.h +++ b/desktop-widgets/command_edit.h @@ -257,7 +257,6 @@ struct PasteState { class PasteDives : public Base { dive_components what; std::vector<PasteState> dives; - std::vector<OwningDiveSitePtr> ownedDiveSites; dive *current; public: PasteDives(const dive *d, dive_components what); |