From b39f2406c6a520f0b3743324744f3c55914adc52 Mon Sep 17 00:00:00 2001 From: Berthold Stoeger Date: Fri, 30 Aug 2019 16:51:59 +0200 Subject: Map: don't fully reset model on selection change When changing the selection the MapLocationModel was reset. This lead to crashes on Qt-5.9 which are due to QML accessing data that was freed during model reset. This putative Qt bug doesn't happen on newer Qt versions. At least Qt-5.12 is known to work. Instead of fighting the bug, let's simply not reset the model but send a dataChanged() for every element of the MapLocationModel. Signed-off-by: Berthold Stoeger --- qt-models/maplocationmodel.h | 1 + 1 file changed, 1 insertion(+) (limited to 'qt-models/maplocationmodel.h') diff --git a/qt-models/maplocationmodel.h b/qt-models/maplocationmodel.h index 8cec08818..25ae159bd 100644 --- a/qt-models/maplocationmodel.h +++ b/qt-models/maplocationmodel.h @@ -67,6 +67,7 @@ public: void add(MapLocation *); // If map is not null, it will be used to place new dive sites without GPS location at the center of the map void reload(QObject *map); + void selectionChanged(); MapLocation *getMapLocation(const struct dive_site *ds); const QVector &selectedDs() const; Q_INVOKABLE void setSelected(struct dive_site *ds); -- cgit v1.2.3-70-g09d2