summaryrefslogtreecommitdiff
path: root/src/location/declarativemaps/qgeomapobject.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/location/declarativemaps/qgeomapobject.cpp')
-rw-r--r--src/location/declarativemaps/qgeomapobject.cpp27
1 files changed, 23 insertions, 4 deletions
diff --git a/src/location/declarativemaps/qgeomapobject.cpp b/src/location/declarativemaps/qgeomapobject.cpp
index 9d94900f..9c97dd57 100644
--- a/src/location/declarativemaps/qgeomapobject.cpp
+++ b/src/location/declarativemaps/qgeomapobject.cpp
@@ -121,14 +121,28 @@ bool QGeoMapObject::visible() const
void QGeoMapObject::setVisible(bool visible)
{
- if (visible == d_ptr->visible())
+ if (visible == d_ptr->m_visible)
return;
+ const bool oldVisible = QGeoMapObject::visible();
d_ptr->setVisible(visible);
+ if (d_ptr->m_componentCompleted)
+ setChildrenVisibility();
+ if (QGeoMapObject::visible() != oldVisible)
+ emit visibleChanged();
+}
+void QGeoMapObject::setParentVisiblity(bool visible)
+{
+ if (visible == d_ptr->m_parentVisible)
+ return;
+
+ const bool oldVisible = QGeoMapObject::visible();
+ d_ptr->setParentVisibility(visible);
if (d_ptr->m_componentCompleted)
setChildrenVisibility();
- emit visibleChanged();
+ if (QGeoMapObject::visible() != oldVisible)
+ emit visibleChanged();
}
QGeoMapObject::Type QGeoMapObject::type() const
@@ -151,7 +165,7 @@ void QGeoMapObject::setChildrenVisibility()
const bool v = visible();
const QList<QGeoMapObject *> kids = geoMapObjectChildren();
for (auto kid : qAsConst(kids))
- kid->setVisible(v);
+ kid->setParentVisiblity(v);
}
void QGeoMapObject::classBegin()
@@ -249,7 +263,7 @@ bool QGeoMapObjectPrivate::equals(const QGeoMapObjectPrivate &other) const
bool QGeoMapObjectPrivate::visible() const
{
- return m_visible;
+ return m_visible && m_parentVisible;
}
void QGeoMapObjectPrivate::setVisible(bool visible)
@@ -257,4 +271,9 @@ void QGeoMapObjectPrivate::setVisible(bool visible)
m_visible = visible;
}
+void QGeoMapObjectPrivate::setParentVisibility(bool visible)
+{
+ m_parentVisible = visible;
+}
+
QT_END_NAMESPACE