summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--commands/command_divelist.cpp3
-rw-r--r--core/divefilter.cpp6
-rw-r--r--core/divefilter.h1
3 files changed, 8 insertions, 2 deletions
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<OwningTripPtr> &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<dive *> &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?