diff options
Diffstat (limited to 'qt-models/divepicturemodel.cpp')
-rw-r--r-- | qt-models/divepicturemodel.cpp | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/qt-models/divepicturemodel.cpp b/qt-models/divepicturemodel.cpp index 3fa1a07f4..48fa652c9 100644 --- a/qt-models/divepicturemodel.cpp +++ b/qt-models/divepicturemodel.cpp @@ -149,7 +149,22 @@ void DivePictureModel::removePictures(const QVector<QString> &fileUrls) copy_dive(current_dive, &displayed_dive); mark_divelist_changed(true); - updateDivePictures(); + for (int i = 0; i < pictures.size(); ++i) { + // Find range [i j) of pictures to remove + if (std::find(fileUrls.begin(), fileUrls.end(), pictures[i].filename) == fileUrls.end()) + continue; + int j; + for (j = i + 1; j < pictures.size(); ++j) { + if (std::find(fileUrls.begin(), fileUrls.end(), pictures[j].filename) == fileUrls.end()) + break; + } + + // Qt's model-interface is surprisingly idiosyncratic: you don't pass [first last), but [first last] ranges. + // For example, an empty list would be [0 -1]. + beginRemoveRows(QModelIndex(), i, j - 1); + pictures.erase(pictures.begin() + i, pictures.begin() + j); + endRemoveRows(); + } } int DivePictureModel::rowCount(const QModelIndex &parent) const |