summaryrefslogtreecommitdiffstats
path: root/qt-ui/globe.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'qt-ui/globe.cpp')
-rw-r--r--qt-ui/globe.cpp16
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()) {