summaryrefslogtreecommitdiffstats
path: root/qt-models
diff options
context:
space:
mode:
Diffstat (limited to 'qt-models')
-rw-r--r--qt-models/filtermodels.cpp5
-rw-r--r--qt-models/filtermodels.h1
-rw-r--r--qt-models/maplocationmodel.cpp7
3 files changed, 11 insertions, 2 deletions
diff --git a/qt-models/filtermodels.cpp b/qt-models/filtermodels.cpp
index 663037383..bcadce613 100644
--- a/qt-models/filtermodels.cpp
+++ b/qt-models/filtermodels.cpp
@@ -278,6 +278,11 @@ void MultiFilterSortModel::stopFilterDiveSites()
myInvalidate();
}
+const QVector<dive_site *> &MultiFilterSortModel::filteredDiveSites() const
+{
+ return dive_sites;
+}
+
bool MultiFilterSortModel::diveSiteMode() const
{
return !dive_sites.isEmpty();
diff --git a/qt-models/filtermodels.h b/qt-models/filtermodels.h
index 7520fbe16..b91b91a04 100644
--- a/qt-models/filtermodels.h
+++ b/qt-models/filtermodels.h
@@ -64,6 +64,7 @@ public:
int divesDisplayed;
bool lessThan(const QModelIndex &, const QModelIndex &) const override;
bool diveSiteMode() const; // returns true if we're filtering on dive site
+ const QVector<dive_site *> &filteredDiveSites() const;
public
slots:
void myInvalidate();
diff --git a/qt-models/maplocationmodel.cpp b/qt-models/maplocationmodel.cpp
index 1e0fd9c81..1fdedf807 100644
--- a/qt-models/maplocationmodel.cpp
+++ b/qt-models/maplocationmodel.cpp
@@ -136,8 +136,11 @@ void MapLocationModel::reload()
#else
// In dive site mode (that is when either editing a dive site or on
// the dive site tab), we want to show all dive sites, not only those
- // of the non-hidden dives.
+ // of the non-hidden dives. Moreover, the selected dive sites are those
+ // that we filter for.
bool diveSiteMode = MultiFilterSortModel::instance()->diveSiteMode();
+ if (diveSiteMode)
+ m_selectedDs = MultiFilterSortModel::instance()->filteredDiveSites();
#endif
for_each_dive(idx, dive) {
// Don't show dive sites of hidden dives, unless this is the currently
@@ -147,7 +150,7 @@ void MapLocationModel::reload()
struct dive_site *ds = get_dive_site_for_dive(dive);
if (!dive_site_has_gps_location(ds))
continue;
- if (dive->selected && !m_selectedDs.contains(ds))
+ if (!diveSiteMode && dive->selected && !m_selectedDs.contains(ds))
m_selectedDs.append(ds);
if (locations.contains(ds))
continue;