diff options
Diffstat (limited to 'qt-ui/globe.cpp')
-rw-r--r-- | qt-ui/globe.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/qt-ui/globe.cpp b/qt-ui/globe.cpp index 966edda17..c2ae56536 100644 --- a/qt-ui/globe.cpp +++ b/qt-ui/globe.cpp @@ -7,6 +7,7 @@ #include "../helpers.h" #include <QDebug> +#include <QTimer> #include <marble/AbstractFloatItem.h> #include <marble/GeoDataPlacemark.h> @@ -63,6 +64,9 @@ GlobeGPS::GlobeGPS(QWidget* parent) : MarbleWidget(parent), loadedDives(0) setMinimumHeight(0); setMinimumWidth(0); editingDiveCoords = 0; + fixZoomTimer = new QTimer(); + connect(fixZoomTimer, SIGNAL(timeout()), this, SLOT(fixZoom())); + fixZoomTimer->setSingleShot(true); } void GlobeGPS::mouseClicked(qreal lon, qreal lat, GeoDataCoordinates::Unit unit) @@ -178,9 +182,21 @@ void GlobeGPS::centerOn(dive* dive) if (!zoom()) zoomView(zoomFromDistance(3)); + if (!fixZoomTimer->isActive()) + currentZoomLevel = zoom(); + // From the marble source code, the maximum time of + // 'spin and fit' is 2 seconds, so wait a bit them zoom again. + fixZoomTimer->start(2100); + centerOn(longitude,latitude, true); } +void GlobeGPS::fixZoom() +{ + zoomView(currentZoomLevel, Marble::Linear); +} + + void GlobeGPS::prepareForGetDiveCoordinates(dive* dive) { if (!messageWidget->isVisible()) { |