summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Berthold Stoeger <bstoeger@mail.tuwien.ac.at>2019-03-20 22:02:10 +0100
committerGravatar Dirk Hohndel <dirk@hohndel.org>2019-04-12 18:19:07 +0300
commit8a33022f39090feff9212a1a61460f4bc75928c5 (patch)
tree3e2aaea42c11df7cfabbc5835101360e628de2e4
parent6f574c53a38ad848bfd364acb0ae16680c3f6c8a (diff)
downloadsubsurface-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.cpp18
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