forked from pool/marble
63ca14ef58
- Add Fix-utm-enum-value.patch and reverse-apply it, this upstream commit causes a crash when adding bookmarks if switched to UTM view angles because the necessary handler functions for the dialog are not implemented yet (boo#1044747, kde#381872) - Add Fix-plain-map-and-political-map-showing-no-content.patch to fix the plain map and the political map being not displayed at all (kde#379297) Please forward to 42.3 as well if accepted. OBS-URL: https://build.opensuse.org/request/show/508101 OBS-URL: https://build.opensuse.org/package/show/KDE:Applications/marble?expand=0&rev=137
110 lines
4.2 KiB
Diff
110 lines
4.2 KiB
Diff
From ce6cbb18b1483245ec2e43c84166f68cea60a26b Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?Dennis=20Nienh=C3=BCser?= <nienhueser@kde.org>
|
|
Date: Mon, 26 Jun 2017 21:57:53 +0200
|
|
Subject: Fix both plain map and political map showing no content at all
|
|
|
|
Both have neither a texture nor a vector tile layer, and hence no
|
|
tile zoom level was set anymore in geometry layer after f847505. Now
|
|
a default tile zoom level is calculated in such scenarios.
|
|
|
|
BUG: 379297
|
|
---
|
|
src/lib/marble/MarbleMap.cpp | 17 ++++++++++-------
|
|
src/lib/marble/layers/VectorTileLayer.cpp | 9 ++++++---
|
|
2 files changed, 16 insertions(+), 10 deletions(-)
|
|
|
|
diff --git a/src/lib/marble/MarbleMap.cpp b/src/lib/marble/MarbleMap.cpp
|
|
index d41c0f1..d62642a 100644
|
|
--- a/src/lib/marble/MarbleMap.cpp
|
|
+++ b/src/lib/marble/MarbleMap.cpp
|
|
@@ -22,6 +22,7 @@
|
|
// Qt
|
|
#include <QTime>
|
|
#include <QRegion>
|
|
+#include <QtMath>
|
|
|
|
// Marble
|
|
#include "layers/FloatItemsLayer.h"
|
|
@@ -209,9 +210,6 @@ MarbleMapPrivate::MarbleMapPrivate( MarbleMap *parent, MarbleModel *model ) :
|
|
|
|
QObject::connect( &m_geometryLayer, SIGNAL(repaintNeeded()),
|
|
parent, SIGNAL(repaintNeeded()));
|
|
- QObject::connect(&m_vectorTileLayer, SIGNAL(tileLevelChanged(int)), &m_geometryLayer, SLOT(setTileLevel(int)));
|
|
- QObject::connect(&m_vectorTileLayer, SIGNAL(tileLevelChanged(int)), &m_placemarkLayer, SLOT(setTileLevel(int)));
|
|
- QObject::connect(&m_textureLayer, SIGNAL(tileLevelChanged(int)), &m_placemarkLayer, SLOT(setTileLevel(int)));
|
|
|
|
/*
|
|
* Slot handleHighlight finds all placemarks
|
|
@@ -239,9 +236,11 @@ MarbleMapPrivate::MarbleMapPrivate( MarbleMap *parent, MarbleModel *model ) :
|
|
parent, SLOT(updateTileLevel()) );
|
|
QObject::connect( &m_vectorTileLayer, SIGNAL(tileLevelChanged(int)),
|
|
parent, SLOT(updateTileLevel()) );
|
|
+ QObject::connect( parent, SIGNAL(radiusChanged(int)),
|
|
+ parent, SLOT(updateTileLevel()) );
|
|
+
|
|
QObject::connect( &m_textureLayer, SIGNAL(repaintNeeded()),
|
|
parent, SIGNAL(repaintNeeded()) );
|
|
-
|
|
QObject::connect( parent, SIGNAL(visibleLatLonAltBoxChanged(GeoDataLatLonAltBox)),
|
|
parent, SIGNAL(repaintNeeded()) );
|
|
|
|
@@ -466,7 +465,8 @@ int MarbleMap::preferredRadiusFloor( int radius )
|
|
|
|
int MarbleMap::tileZoomLevel() const
|
|
{
|
|
- return qMax(d->m_textureLayer.tileZoomLevel(), d->m_vectorTileLayer.tileZoomLevel());
|
|
+ auto const tileZoomLevel = qMax(d->m_textureLayer.tileZoomLevel(), d->m_vectorTileLayer.tileZoomLevel());
|
|
+ return tileZoomLevel >= 0 ? tileZoomLevel : qMin<int>(qMax<int>(qLn(d->m_viewport.radius()*4/256)/qLn(2.0), 1), d->m_styleBuilder.maximumZoomLevel());
|
|
}
|
|
|
|
|
|
@@ -828,7 +828,10 @@ void MarbleMapPrivate::setDocument( const QString& key )
|
|
|
|
void MarbleMapPrivate::updateTileLevel()
|
|
{
|
|
- emit q->tileLevelChanged(q->tileZoomLevel());
|
|
+ auto const tileZoomLevel = q->tileZoomLevel();
|
|
+ m_geometryLayer.setTileLevel(tileZoomLevel);
|
|
+ m_placemarkLayer.setTileLevel(tileZoomLevel);
|
|
+ emit q->tileLevelChanged(tileZoomLevel);
|
|
}
|
|
|
|
// Used to be paintEvent()
|
|
diff --git a/src/lib/marble/layers/VectorTileLayer.cpp b/src/lib/marble/layers/VectorTileLayer.cpp
|
|
index 864dddf..505d7a6 100644
|
|
--- a/src/lib/marble/layers/VectorTileLayer.cpp
|
|
+++ b/src/lib/marble/layers/VectorTileLayer.cpp
|
|
@@ -133,7 +133,7 @@ RenderState VectorTileLayer::renderState() const
|
|
|
|
int VectorTileLayer::tileZoomLevel() const
|
|
{
|
|
- int level = 0;
|
|
+ int level = -1;
|
|
for (const auto *mapper: d->m_activeTileModels) {
|
|
level = qMax(level, mapper->tileZoomLevel());
|
|
}
|
|
@@ -163,7 +163,7 @@ bool VectorTileLayer::render(GeoPainter *painter, ViewportParams *viewport,
|
|
mapper->setViewport(viewport->viewLatLonAltBox());
|
|
level = qMax(level, mapper->tileZoomLevel());
|
|
}
|
|
- if (oldLevel != level) {
|
|
+ if (oldLevel != level && level >= 0) {
|
|
emit tileLevelChanged(level);
|
|
}
|
|
|
|
@@ -202,7 +202,10 @@ void VectorTileLayer::setMapTheme(const QVector<const GeoSceneVectorTileDataset
|
|
}
|
|
|
|
d->updateLayerSettings();
|
|
- emit tileLevelChanged(tileZoomLevel());
|
|
+ auto const level = tileZoomLevel();
|
|
+ if (level >= 0) {
|
|
+ emit tileLevelChanged(level);
|
|
+ }
|
|
}
|
|
|
|
}
|
|
--
|
|
cgit v0.11.2
|
|
|