summaryrefslogtreecommitdiffstats
path: root/src/declarative/qml/qmlcontext.cpp
diff options
context:
space:
mode:
authorAaron Kennedy <aaron.kennedy@nokia.com>2010-02-08 03:49:09 (GMT)
committerAaron Kennedy <aaron.kennedy@nokia.com>2010-02-08 03:53:03 (GMT)
commit87d71b29a8c4239cb807f13ac9d009cef1ca1a69 (patch)
tree5889e80b9a96bb8b70f44a67d737e5464d2d72d3 /src/declarative/qml/qmlcontext.cpp
parentf5ad8f76430b43c0a72c1bf41fae1d279948a0e0 (diff)
downloadQt-87d71b29a8c4239cb807f13ac9d009cef1ca1a69.zip
Qt-87d71b29a8c4239cb807f13ac9d009cef1ca1a69.tar.gz
Qt-87d71b29a8c4239cb807f13ac9d009cef1ca1a69.tar.bz2
Allow objects to be shared between QmlEngines
QTBUG-7957
Diffstat (limited to 'src/declarative/qml/qmlcontext.cpp')
-rw-r--r--src/declarative/qml/qmlcontext.cpp15
1 files changed, 6 insertions, 9 deletions
diff --git a/src/declarative/qml/qmlcontext.cpp b/src/declarative/qml/qmlcontext.cpp
index 0eb497d..4c6dc6f 100644
--- a/src/declarative/qml/qmlcontext.cpp
+++ b/src/declarative/qml/qmlcontext.cpp
@@ -461,16 +461,13 @@ QVariant QmlContext::contextProperty(const QString &name) const
QByteArray utf8Name = name.toUtf8();
for (int ii = d->defaultObjects.count() - 1; ii >= 0; --ii) {
QObject *obj = d->defaultObjects.at(ii);
- QmlDeclarativeData *data = QmlDeclarativeData::get(obj);
- if (data && data->propertyCache) {
- QmlPropertyCache::Data *property = data->propertyCache->property(name);
- if (property)
- value = obj->metaObject()->property(property->coreIndex).read(obj);
- } else {
- value = obj->property(utf8Name);
- }
- if (value.isValid())
+ QmlPropertyCache::Data local;
+ QmlPropertyCache::Data *property = QmlPropertyCache::property(d->engine, obj, name, local);
+
+ if (property) {
+ value = obj->metaObject()->property(property->coreIndex).read(obj);
break;
+ }
}
if (!value.isValid() && parentContext())
value = parentContext()->contextProperty(name);