[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

Reply via email to