[2014-07-07 21:13:03 -1000] Gaetan Bisson: > But somehow the loop at line 720 of qt-ui/maintab.cpp (after the comment > "if we have a location text and haven't edited the coordinates...") does > not work with a single dive.
Alright, the attached patch seems to work. Would you mind confirming that it does? Please do test as many scenarios as you can: adding dives, emptying the coordinates field, modifying the location, etc. Cheers. -- Gaetan
>From 15d44f5b5b0a8b420e635c8256ee747455ecefd3 Mon Sep 17 00:00:00 2001 From: Gaetan Bisson <bis...@archlinux.org> Date: Mon, 7 Jul 2014 21:45:16 -1000 Subject: [PATCH] make GPS coordinates autofilling really work Move the gpsHasChanged() call on selected dive when coordinates have changed *before* autofilling, otherwise it erases the autofilled values. Also update displayed_dive when autofilling, otherwise values are stored but not displayed immediately after saving. Signed-off-by: Gaetan Bisson <bis...@archlinux.org> --- qt-ui/maintab.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/qt-ui/maintab.cpp b/qt-ui/maintab.cpp index 5dd5a53..477cd22 100644 --- a/qt-ui/maintab.cpp +++ b/qt-ui/maintab.cpp @@ -690,6 +690,10 @@ void MainTab::acceptChanges() time_t offset = current_dive->when - displayed_dive.when; MODIFY_SELECTED_DIVES(mydive->when -= offset;); } + if (displayed_dive.latitude.udeg != current_dive->latitude.udeg || + displayed_dive.longitude.udeg != current_dive->longitude.udeg) { + MODIFY_SELECTED_DIVES(gpsHasChanged(mydive, cd, ui.coordinates->text(), 0)); + } if (!same_string(displayed_dive.location, cd->location)) { MODIFY_SELECTED_DIVES(EDIT_TEXT(location)); // if we have a location text and haven't edited the coordinates, try to fill the coordinates @@ -707,16 +711,14 @@ void MainTab::acceptChanges() mydive->latitude = dive->latitude; mydive->longitude = dive->longitude; }); + displayed_dive.latitude = dive->latitude; + displayed_dive.longitude = dive->longitude; MainWindow::instance()->globe()->reload(); break; } } } } - if (displayed_dive.latitude.udeg != current_dive->latitude.udeg || - displayed_dive.longitude.udeg != current_dive->longitude.udeg) { - MODIFY_SELECTED_DIVES(gpsHasChanged(mydive, cd, ui.coordinates->text(), 0)); - } if (tagsChanged(&displayed_dive, cd)) saveTags(); -- 2.0.1
_______________________________________________ subsurface mailing list subsurface@hohndel.org http://lists.hohndel.org/cgi-bin/mailman/listinfo/subsurface