summaryrefslogtreecommitdiff
path: root/src/location/declarativemaps/qparameterizableobject.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/location/declarativemaps/qparameterizableobject.cpp')
-rw-r--r--src/location/declarativemaps/qparameterizableobject.cpp41
1 files changed, 37 insertions, 4 deletions
diff --git a/src/location/declarativemaps/qparameterizableobject.cpp b/src/location/declarativemaps/qparameterizableobject.cpp
index 0e138b86..26d9a11e 100644
--- a/src/location/declarativemaps/qparameterizableobject.cpp
+++ b/src/location/declarativemaps/qparameterizableobject.cpp
@@ -37,13 +37,10 @@
#include "qparameterizableobject_p.h"
#include "qdeclarativegeomapparameter_p.h"
#include <QtLocation/private/qgeomapparameter_p.h>
+#include <private/qobject_p.h>
QT_BEGIN_NAMESPACE
-QParameterizableObject::QParameterizableObject(QObject *parent)
- : QObject(parent)
-{}
-
void QParameterizableObject::appendChild(QObject *v)
{
m_children.append(v);
@@ -85,4 +82,40 @@ void QParameterizableObject::clear(QQmlListProperty<QObject> *p)
object->clearChildren();
}
+class QParameterizableObjectData: public QAbstractDeclarativeData
+{
+public:
+ QParameterizableObjectData()
+ {
+ init();
+ }
+
+ static inline void init() {
+ static bool initialized = false;
+ if (!initialized) {
+ initialized = true;
+ QAbstractDeclarativeData::parentChanged = parentChanged;
+ }
+ }
+
+ static void parentChanged(QAbstractDeclarativeData *d, QObject *o, QObject *p);
+};
+
+Q_GLOBAL_STATIC(QParameterizableObjectData, parametrizableObjectData)
+
+QParameterizableObject::QParameterizableObject(QObject *parent)
+ : QObject(parent)
+{
+ QObjectPrivate::get(this)->declarativeData = parametrizableObjectData;
+}
+
+void QParameterizableObjectData::parentChanged(QAbstractDeclarativeData *d, QObject *o, QObject *p)
+{
+ Q_UNUSED(p)
+ Q_UNUSED(d)
+ QParameterizableObject *po = qobject_cast<QParameterizableObject *>(o);
+ if (po)
+ po->parentChanged();
+}
+
QT_END_NAMESPACE