diff --git a/commands/command_divelist.cpp b/commands/command_divelist.cpp index 262197214..36d4cdcf3 100644 --- a/commands/command_divelist.cpp +++ b/commands/command_divelist.cpp @@ -48,8 +48,7 @@ DiveToAdd DiveListBase::removeDive(struct dive *d, std::vector &t if (idx < 0) qWarning("Deletion of unknown dive!"); - if (!d->hidden_by_filter) - --shown_dives; + DiveFilter::instance()->diveRemoved(d); res.dive.reset(unregister_dive(idx)); // Remove dive from backend diff --git a/core/divefilter.cpp b/core/divefilter.cpp index 4c40869f5..cdf74a49f 100644 --- a/core/divefilter.cpp +++ b/core/divefilter.cpp @@ -101,6 +101,12 @@ DiveFilter::DiveFilter() : diveSiteRefCount(0) { } +void DiveFilter::diveRemoved(const dive *d) const +{ + if (!d->hidden_by_filter) + --shown_dives; +} + bool DiveFilter::showDive(const struct dive *d) const { if (d->invalid && !prefs.display_invalid_dives) diff --git a/core/divefilter.h b/core/divefilter.h index 608cf4843..84c9efee2 100644 --- a/core/divefilter.h +++ b/core/divefilter.h @@ -51,6 +51,7 @@ public: void setFilter(const FilterData &data); ShownChange update(const QVector &dives) const; // Update filter status of given dives and return dives whose status changed ShownChange updateAll() const; // Update filter status of all dives and return dives whose status changed + void diveRemoved(const dive *dive) const; // Dive was removed; update count accordingly private: DiveFilter(); bool showDive(const struct dive *d) const; // Should that dive be shown?