diff options
Diffstat (limited to 'platform/qt/src')
-rw-r--r-- | platform/qt/src/qquickmapboxgl.cpp | 6 | ||||
-rw-r--r-- | platform/qt/src/qquickmapboxglrenderer.cpp | 19 | ||||
-rw-r--r-- | platform/qt/src/qquickmapboxglrenderer.hpp | 1 |
3 files changed, 23 insertions, 3 deletions
diff --git a/platform/qt/src/qquickmapboxgl.cpp b/platform/qt/src/qquickmapboxgl.cpp index 6d90a4aeae..b80b343d35 100644 --- a/platform/qt/src/qquickmapboxgl.cpp +++ b/platform/qt/src/qquickmapboxgl.cpp @@ -23,7 +23,9 @@ QQuickMapboxGL::~QQuickMapboxGL() QQuickFramebufferObject::Renderer *QQuickMapboxGL::createRenderer() const { - return new QQuickMapboxGLRenderer(); + QQuickMapboxGLRenderer *renderer = new QQuickMapboxGLRenderer(); + connect(renderer, SIGNAL(styleChanged()), this, SIGNAL(styleChanged())); + return renderer; } void QQuickMapboxGL::setPlugin(QDeclarativeGeoServiceProvider *) @@ -267,11 +269,13 @@ void QQuickMapboxGL::itemChange(QQuickItem::ItemChange change, const QQuickItem: case QQuickItem::ItemChildAddedChange: if (QQuickMapboxGLStyleProperty *property = qobject_cast<QQuickMapboxGLStyleProperty *>(value.item)) { connect(property, SIGNAL(updated(QVariantMap)), this, SLOT(onStylePropertyUpdated(QVariantMap))); + connect(this, SIGNAL(styleChanged()), property, SLOT(checkUpdated())); } break; case QQuickItem::ItemChildRemovedChange: if (QQuickMapboxGLStyleProperty *property = qobject_cast<QQuickMapboxGLStyleProperty *>(value.item)) { disconnect(property, SIGNAL(updated(QVariantMap)), this, SLOT(onStylePropertyUpdated(QVariantMap))); + disconnect(this, SIGNAL(styleChanged()), property, SLOT(checkUpdated())); } default: break; diff --git a/platform/qt/src/qquickmapboxglrenderer.cpp b/platform/qt/src/qquickmapboxglrenderer.cpp index 35a32be2ad..1b9a983d54 100644 --- a/platform/qt/src/qquickmapboxglrenderer.cpp +++ b/platform/qt/src/qquickmapboxglrenderer.cpp @@ -28,9 +28,24 @@ QQuickMapboxGLRenderer::~QQuickMapboxGLRenderer() void QQuickMapboxGLRenderer::onMapChanged(QMapboxGL::MapChange change) { - if (change == QMapboxGL::MapChangeDidFinishLoadingMap) { + auto onMapChangeWillStartLoadingMap = [&]() { + m_styleLoaded = false; + }; + + auto onMapChangeDidFinishLoadingMap = [&]() { m_styleLoaded = true; - update(); + emit styleChanged(); + }; + + switch (change) { + case QMapboxGL::MapChangeWillStartLoadingMap: + onMapChangeWillStartLoadingMap(); + break; + case QMapboxGL::MapChangeDidFinishLoadingMap: + onMapChangeDidFinishLoadingMap(); + break; + default: + break; } } diff --git a/platform/qt/src/qquickmapboxglrenderer.hpp b/platform/qt/src/qquickmapboxglrenderer.hpp index d7ca7430ab..a5e56e3675 100644 --- a/platform/qt/src/qquickmapboxglrenderer.hpp +++ b/platform/qt/src/qquickmapboxglrenderer.hpp @@ -25,6 +25,7 @@ public: signals: void centerChanged(const QGeoCoordinate &); + void styleChanged(); public slots: void onMapChanged(QMapboxGL::MapChange); |