diff options
author | Berthold Stoeger <bstoeger@mail.tuwien.ac.at> | 2019-03-20 22:02:10 +0100 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2019-04-12 18:19:07 +0300 |
commit | 8a33022f39090feff9212a1a61460f4bc75928c5 (patch) | |
tree | 3e2aaea42c11df7cfabbc5835101360e628de2e4 | |
parent | 6f574c53a38ad848bfd364acb0ae16680c3f6c8a (diff) | |
download | subsurface-8a33022f39090feff9212a1a61460f4bc75928c5.tar.gz |
Undo: send dive-changed signal on dive site merging
Now that we have dive-changed signal, send it on merging
dive sites so that the notes tab can be updated accordingly.
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
-rw-r--r-- | desktop-widgets/command_divesite.cpp | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/desktop-widgets/command_divesite.cpp b/desktop-widgets/command_divesite.cpp index 3b35ddcc2..7289bb980 100644 --- a/desktop-widgets/command_divesite.cpp +++ b/desktop-widgets/command_divesite.cpp @@ -311,25 +311,37 @@ void MergeDiveSites::redo() // First, remove all dive sites sitesToAdd = std::move(removeDiveSites(sitesToRemove)); + // Remember which dives changed so that we can send a single dives-edited signal + QVector<dive *> divesChanged; + // The dives of the above dive sites were reset to no dive sites. // Add them to the merged-into dive site. Thankfully, we remember // the dives in the sitesToAdd vector. for (const OwningDiveSitePtr &site: sitesToAdd) { - for (int i = 0; i < site->dives.nr; ++i) - add_dive_to_dive_site(site->dives.dives[i], ds); // TODO: send dive changed signal + for (int i = 0; i < site->dives.nr; ++i) { + add_dive_to_dive_site(site->dives.dives[i], ds); + divesChanged.append(site->dives.dives[i]); + } } + emit diveListNotifier.divesEdited(divesChanged, DiveField::DIVESITE); } void MergeDiveSites::undo() { + // Remember which dives changed so that we can send a single dives-edited signal + QVector<dive *> divesChanged; + // Before readding the dive sites, unregister the corresponding dives so that they can be // readded to their old dive sites. for (const OwningDiveSitePtr &site: sitesToAdd) { - for (int i = 0; i < site->dives.nr; ++i) + for (int i = 0; i < site->dives.nr; ++i) { unregister_dive_from_dive_site(site->dives.dives[i]); + divesChanged.append(site->dives.dives[i]); + } } sitesToRemove = std::move(addDiveSites(sitesToAdd)); + emit diveListNotifier.divesEdited(divesChanged, DiveField::DIVESITE); } } // namespace Command |