diff options
author | Aaron Kennedy <aaron.kennedy@nokia.com> | 2009-08-10 03:44:48 (GMT) |
---|---|---|
committer | Aaron Kennedy <aaron.kennedy@nokia.com> | 2009-08-10 03:44:48 (GMT) |
commit | 12ffa33ddc725cd94662a383af6e1793049c807c (patch) | |
tree | 8190ce28b9cc6bd23736f718ded3b59d32be80d0 /src/declarative/qml/qmlengine.cpp | |
parent | 3ee9db1d892927522832b6bc8e1d806e27015bc4 (diff) | |
download | Qt-12ffa33ddc725cd94662a383af6e1793049c807c.zip Qt-12ffa33ddc725cd94662a383af6e1793049c807c.tar.gz Qt-12ffa33ddc725cd94662a383af6e1793049c807c.tar.bz2 |
Simplify QmlDeclarativeData to a single class
Diffstat (limited to 'src/declarative/qml/qmlengine.cpp')
-rw-r--r-- | src/declarative/qml/qmlengine.cpp | 37 |
1 files changed, 21 insertions, 16 deletions
diff --git a/src/declarative/qml/qmlengine.cpp b/src/declarative/qml/qmlengine.cpp index 68ad655..09539bc 100644 --- a/src/declarative/qml/qmlengine.cpp +++ b/src/declarative/qml/qmlengine.cpp @@ -427,8 +427,8 @@ QmlContext *QmlEngine::contextForObject(const QObject *object) QObjectPrivate *priv = QObjectPrivate::get(const_cast<QObject *>(object)); - QmlSimpleDeclarativeData *data = - static_cast<QmlSimpleDeclarativeData *>(priv->declarativeData); + QmlDeclarativeData *data = + static_cast<QmlDeclarativeData *>(priv->declarativeData); return data?data->context:0; } @@ -444,8 +444,8 @@ void QmlEngine::setContextForObject(QObject *object, QmlContext *context) { QObjectPrivate *priv = QObjectPrivate::get(object); - QmlSimpleDeclarativeData *data = - static_cast<QmlSimpleDeclarativeData *>(priv->declarativeData); + QmlDeclarativeData *data = + static_cast<QmlDeclarativeData *>(priv->declarativeData); if (data && data->context) { qWarning("QmlEngine::setContextForObject(): Object already has a QmlContext"); @@ -453,7 +453,7 @@ void QmlEngine::setContextForObject(QObject *object, QmlContext *context) } if (!data) { - priv->declarativeData = &context->d_func()->contextData; + priv->declarativeData = new QmlDeclarativeData(context); } else { data->context = context; } @@ -463,7 +463,7 @@ void QmlEngine::setContextForObject(QObject *object, QmlContext *context) void qmlExecuteDeferred(QObject *object) { - QmlInstanceDeclarativeData *data = QmlInstanceDeclarativeData::get(object); + QmlDeclarativeData *data = QmlDeclarativeData::get(object); if (data && data->deferredComponent) { QmlVME vme; @@ -487,10 +487,9 @@ QmlEngine *qmlEngine(const QObject *obj) QObject *qmlAttachedPropertiesObjectById(int id, const QObject *object, bool create) { - QmlExtendedDeclarativeData *edata = - QmlExtendedDeclarativeData::get(const_cast<QObject *>(object), true); + QmlDeclarativeData *data = QmlDeclarativeData::get(object); - QObject *rv = edata->attachedProperties.value(id); + QObject *rv = data->attachedProperties?data->attachedProperties->value(id):0; if (rv || !create) return rv; @@ -500,23 +499,29 @@ QObject *qmlAttachedPropertiesObjectById(int id, const QObject *object, bool cre rv = pf(const_cast<QObject *>(object)); - if (rv) - edata->attachedProperties.insert(id, rv); + if (rv) { + if (!data->attachedProperties) + data->attachedProperties = new QHash<int, QObject *>(); + data->attachedProperties->insert(id, rv); + } return rv; } -void QmlSimpleDeclarativeData::destroyed(QObject *object) +QmlDeclarativeData::QmlDeclarativeData(QmlContext *ctxt) +: context(ctxt), bindings(0), deferredComponent(0), attachedProperties(0) { - if (context) - context->d_func()->contextObjects.removeAll(object); } -void QmlInstanceDeclarativeData::destroyed(QObject *object) +void QmlDeclarativeData::destroyed(QObject *object) { - QmlSimpleDeclarativeData::destroyed(object); if (deferredComponent) deferredComponent->release(); + if (attachedProperties) + delete attachedProperties; + if (context) + static_cast<QmlContextPrivate *>(QObjectPrivate::get(context))->contextObjects.removeAll(object); + delete this; } |