From 6193aef9ac7678a66748d6cd410e387024cc16cb Mon Sep 17 00:00:00 2001 From: Jan Mulder Date: Sun, 7 Jan 2018 16:08:25 +0100 Subject: mobile: fix crash on delete dive from divelist This is a somewhat hacky commit. For a very long time, the delete from the divelist on mobile crashed. That is, not always for anyone, but for me almost consistently. This commit tries to solve it. I found that trying to save the delete immediately after removing data from the underlying model seemed to cause the crash. Hacking around, I found that a simple beginResetModel/endResetModel between the delete of the underlying model data and actual save is sufficient to solve the crash. The big question is, why does this all work? I suspect some of race condition between deleting model data, and giving the QML engine the opportunity to do its thing. This is also related to issue #311, but that is not implemented here. Signed-off-by: Jan Mulder --- mobile-widgets/qml/DiveList.qml | 3 +-- mobile-widgets/qmlmanager.cpp | 1 + 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'mobile-widgets') diff --git a/mobile-widgets/qml/DiveList.qml b/mobile-widgets/qml/DiveList.qml index 263820a46..5953c1f86 100644 --- a/mobile-widgets/qml/DiveList.qml +++ b/mobile-widgets/qml/DiveList.qml @@ -162,9 +162,8 @@ Kirigami.ScrollablePage { anchors.fill: parent enabled: parent.visible onClicked: { - parent.visible = false + deleteButtonVisible = false timer.stop() - detailsWindow.showDiveIndex(index) manager.deleteDive(dive.id) } } diff --git a/mobile-widgets/qmlmanager.cpp b/mobile-widgets/qmlmanager.cpp index 296243f7e..91c73752c 100644 --- a/mobile-widgets/qmlmanager.cpp +++ b/mobile-widgets/qmlmanager.cpp @@ -1244,6 +1244,7 @@ void QMLManager::deleteDive(int id) } DiveListModel::instance()->removeDiveById(id); delete_single_dive(get_idx_by_uniq_id(id)); + DiveListModel::instance()->resetInternalData(); changesNeedSaving(); } -- cgit v1.2.3-70-g09d2