From b7665251835cb6786c3b268fd0d04d69dccf36ed Mon Sep 17 00:00:00 2001 From: Berthold Stoeger Date: Fri, 30 Aug 2019 17:55:54 +0200 Subject: [PATCH] Selection: properly update selection flag of map location Owing to the recent changes, when the selection flag in the MapLocationModel was not updated correctly when the user manually selected the dive. Do that before raising the divesSelected signal in DiveListView::selectionChanged() because that will cause the MainWindow to repaint the flags. Signed-off-by: Berthold Stoeger --- desktop-widgets/divelistview.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/desktop-widgets/divelistview.cpp b/desktop-widgets/divelistview.cpp index 489929bc6..fffb1186f 100644 --- a/desktop-widgets/divelistview.cpp +++ b/desktop-widgets/divelistview.cpp @@ -687,8 +687,20 @@ void DiveListView::selectionChanged(const QItemSelection &selected, const QItemS select_dive(dive); } } - if (!dontEmitDiveChangedSignal) + if (!dontEmitDiveChangedSignal) { + // When receiving the divesSelected signal the main window will + // instruct the map to update the flags. Thus, make sure that + // the selected maps are registered correctly. + QVector selectedSites; + for (QModelIndex index: selectionModel()->selection().indexes()) { + const QAbstractItemModel *model = index.model(); + struct dive *dive = model->data(index, DiveTripModelBase::DIVE_ROLE).value(); + if (dive && dive->dive_site) + selectedSites.push_back(dive->dive_site); + } + MapWidget::instance()->setSelected(selectedSites); emit divesSelected(); + } // Display the new, processed, selection QTreeView::selectionChanged(selectionModel()->selection(), newDeselected);