From 954820aa81cb52cfe4442f2c6e81117827e32ccc Mon Sep 17 00:00:00 2001 From: Berthold Stoeger Date: Sat, 13 Oct 2018 08:57:46 +0200 Subject: Dive site: explicitly init displayed_dive_site on show widget The global object "displayed_dive_site" is used to store the old dive site data for the edit-dive-site widget. The fields of the widget were initialized from this object in the show event. Therefore the object was updated in numerous parts of the code to make sure that it was up-to-date. Instead, move the initialization of the object to the function that also initiatlizes the fields. Call this function explicitly before showing the widget. This makes the data-fow distinctly easier to understand. Signed-off-by: Berthold Stoeger --- desktop-widgets/tab-widgets/maintab.cpp | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) (limited to 'desktop-widgets/tab-widgets') diff --git a/desktop-widgets/tab-widgets/maintab.cpp b/desktop-widgets/tab-widgets/maintab.cpp index 179228ea0..322ec5943 100644 --- a/desktop-widgets/tab-widgets/maintab.cpp +++ b/desktop-widgets/tab-widgets/maintab.cpp @@ -419,11 +419,9 @@ void MainTab::updateDiveInfo(bool clear) if (ds) { ui.location->setCurrentDiveSiteUuid(ds->uuid); ui.locationTags->setText(constructLocationTags(ds, true)); - copy_dive_site(ds, &displayed_dive_site); } else { ui.location->clear(); ui.locationTags->clear(); - clear_dive_site(&displayed_dive_site); } // Subsurface always uses "local time" as in "whatever was the local time at the location" @@ -657,10 +655,8 @@ MainTab::EditMode MainTab::getEditMode() const void MainTab::refreshDisplayedDiveSite() { struct dive_site *ds = get_dive_site_for_dive(&displayed_dive); - if (ds) { - copy_dive_site(ds, &displayed_dive_site); + if (ds) ui.location->setCurrentDiveSiteUuid(ds->uuid); - } } // when this is called we already have updated the current_dive and know that it exists @@ -906,9 +902,6 @@ void MainTab::acceptChanges() // so let's make sure here that our data is consistent now that we have handled the // dive sites displayed_dive.dive_site_uuid = current_dive->dive_site_uuid; - struct dive_site *ds = get_dive_site_by_uuid(displayed_dive.dive_site_uuid); - if (ds) - copy_dive_site(ds, &displayed_dive_site); // each dive that was selected might have had the temperatures in its active divecomputer changed // so re-populate the temperatures - easiest way to do this is by calling fixup_dive -- cgit v1.2.3-70-g09d2