summaryrefslogtreecommitdiff
path: root/src/imports
diff options
context:
space:
mode:
authorPaolo Angelelli <paolo.angelelli@qt.io>2016-10-14 14:59:36 +0200
committerPaolo Angelelli <paolo.angelelli@qt.io>2016-10-19 10:04:45 +0000
commit66da817c87a6990173ecc3494f51ce40ed792a38 (patch)
tree779d8b374b1129ce2b94fe2e513de6c571bd2489 /src/imports
parent6a4be78bfc0f0c51b3394a70adf76a14d45639b6 (diff)
downloadqtlocation-66da817c87a6990173ecc3494f51ce40ed792a38.tar.gz
Fix for occasional gray bands appearing upon window resizing
QDeclarativeGeoMap::geometryChanged missed recomputing the latitudinal bounds for the map center upon resize. This may have resulted in center values too far north or far south for certain window sizes. Change-Id: Id306cdaf1c943655da5e40c18379f0b4f1c7b256 Reviewed-by: Michal Klocek <michal.klocek@qt.io>
Diffstat (limited to 'src/imports')
-rw-r--r--src/imports/location/qdeclarativegeomap.cpp19
1 files changed, 17 insertions, 2 deletions
diff --git a/src/imports/location/qdeclarativegeomap.cpp b/src/imports/location/qdeclarativegeomap.cpp
index e311d77f..fafc2f82 100644
--- a/src/imports/location/qdeclarativegeomap.cpp
+++ b/src/imports/location/qdeclarativegeomap.cpp
@@ -1310,11 +1310,26 @@ void QDeclarativeGeoMap::geometryChanged(const QRectF &newGeometry, const QRectF
m_map->setSize(newGeometry.size().toSize());
- if (!m_initialized)
+ if (!m_initialized) {
initialize();
- else
+ } else {
setMinimumZoomLevel(m_map->minimumZoomAtMapSize(newGeometry.width(), newGeometry.height()));
+ // Update the center latitudinal threshold
+ double maximumCenterLatitudeAtZoom = m_map->maximumCenterLatitudeAtZoom(m_cameraData.zoomLevel());
+ if (maximumCenterLatitudeAtZoom != m_maximumViewportLatitude) {
+ m_maximumViewportLatitude = maximumCenterLatitudeAtZoom;
+ QGeoCoordinate coord = m_cameraData.center();
+ coord.setLatitude(qBound(-m_maximumViewportLatitude, coord.latitude(), m_maximumViewportLatitude));
+
+ if (coord != m_cameraData.center()) {
+ m_cameraData.setCenter(coord);
+ m_map->setCameraData(m_cameraData);
+ emit centerChanged(m_cameraData.center());
+ }
+ }
+ }
+
/*!
The fitViewportTo*() functions depend on a valid map geometry.
If they were called prior to the first resize they cause