diff options
Diffstat (limited to 'desktop-widgets/command_divelist.cpp')
-rw-r--r-- | desktop-widgets/command_divelist.cpp | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/desktop-widgets/command_divelist.cpp b/desktop-widgets/command_divelist.cpp index 089fe3ec5..c7dad70e4 100644 --- a/desktop-widgets/command_divelist.cpp +++ b/desktop-widgets/command_divelist.cpp @@ -69,6 +69,8 @@ DiveToAdd DiveListBase::removeDive(struct dive *d, std::vector<OwningTripPtr> &t // remove dive from trip and site - if this is the last dive in the trip // remove the whole trip. res.trip = unregister_dive_from_trip(d); + if (d->dive_site) + diveSiteCountChanged(d->dive_site); res.site = unregister_dive_from_dive_site(d); if (res.trip && res.trip->dives.nr == 0) { unregister_trip(res.trip, &trip_table); // Remove trip from backend @@ -80,6 +82,12 @@ DiveToAdd DiveListBase::removeDive(struct dive *d, std::vector<OwningTripPtr> &t return res; } +void DiveListBase::diveSiteCountChanged(struct dive_site *ds) +{ + if (std::find(sitesCountChanged.begin(), sitesCountChanged.end(), ds) == sitesCountChanged.end()) + sitesCountChanged.push_back(ds); +} + // This helper function adds a dive and returns ownership to the backend. It may also add a dive trip. // It is crucial that dives are added in reverse order of deletion (see comment above)! // Returns pointer to added dive (which is owned by the backend!) @@ -87,8 +95,10 @@ dive *DiveListBase::addDive(DiveToAdd &d) { if (d.trip) add_dive_to_trip(d.dive.get(), d.trip); - if (d.site) + if (d.site) { add_dive_to_dive_site(d.dive.get(), d.site); + diveSiteCountChanged(d.site); + } dive *res = d.dive.release(); // Give up ownership of dive // Set the filter flag according to current filter settings @@ -370,6 +380,8 @@ void DiveListBase::finishWork() { if (selectionChanged) // If the selection changed -> tell the frontend emit diveListNotifier.selectionChanged(); + for (dive_site *ds: sitesCountChanged) + emit diveListNotifier.diveSiteDiveCountChanged(ds); } // Set the current dive either from a list of selected dives, |