mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-30 22:20:21 +00:00
models: update divesite-model when clearing/updating dive model
When the dive list is cleared or updated, the entries in the divesite-model become stale and therefore the divesite-model (with the actual name LocationInformationModel) also must be updated. This was done manually in some parts of the code and forgotten in others. Therefore, do it directly in the clear() and reset() function of the dive list-model. This might be a bit of a layering violation: why should one model call into another if they are not in parent/child relationship? However, this seems easier than introducing a global "reset dives" function that coordinates the models. Moreover, it does not appear 100% safe: if the clearing of the divesite model causes accesses to the divelist-model, they happen in the midst of a model reset and we had horrible bugs with that kind of things. However, I don't think that should happen. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
parent
9722f04e40
commit
9310d72943
3 changed files with 2 additions and 2 deletions
|
@ -660,7 +660,6 @@ void MainWindow::closeCurrentFile()
|
|||
setCurrentFile(nullptr);
|
||||
diveList->setSortOrder(DiveTripModelBase::NR, Qt::DescendingOrder);
|
||||
MapWidget::instance()->reload();
|
||||
LocationInformationModel::instance()->update();
|
||||
if (!existing_filename)
|
||||
setTitle();
|
||||
disableShortcuts();
|
||||
|
|
|
@ -517,7 +517,6 @@ void MainTab::reload()
|
|||
buddyModel.updateModel();
|
||||
diveMasterModel.updateModel();
|
||||
tagModel.updateModel();
|
||||
LocationInformationModel::instance()->update();
|
||||
}
|
||||
|
||||
void MainTab::refreshDisplayedDiveSite()
|
||||
|
|
|
@ -474,6 +474,7 @@ void DiveTripModelBase::clear()
|
|||
beginResetModel();
|
||||
clear_dive_file_data();
|
||||
clearData();
|
||||
LocationInformationModel::instance()->update();
|
||||
oldCurrent = nullptr;
|
||||
emit diveListNotifier.divesSelected({}); // Inform profile, etc of changed selection
|
||||
endResetModel();
|
||||
|
@ -485,6 +486,7 @@ void DiveTripModelBase::reset()
|
|||
beginResetModel();
|
||||
clearData();
|
||||
populate();
|
||||
LocationInformationModel::instance()->update();
|
||||
endResetModel();
|
||||
initSelection();
|
||||
emit diveListNotifier.numShownChanged();
|
||||
|
|
Loading…
Reference in a new issue