summaryrefslogtreecommitdiffstats
path: root/src/declarative/qml/qmlcontext.cpp
diff options
context:
space:
mode:
authorMartin Jones <martin.jones@nokia.com>2009-12-16 02:12:49 (GMT)
committerMartin Jones <martin.jones@nokia.com>2009-12-16 02:12:49 (GMT)
commit3f9d0888c7ad79063b8a53c85e89ff95dce2a45b (patch)
treed4427258a913c83b217ee7822e6775fd31c23dcc /src/declarative/qml/qmlcontext.cpp
parent211a63a1e3669055e28dfba4cff1e2b7f6e5e3ca (diff)
downloadQt-3f9d0888c7ad79063b8a53c85e89ff95dce2a45b.zip
Qt-3f9d0888c7ad79063b8a53c85e89ff95dce2a45b.tar.gz
Qt-3f9d0888c7ad79063b8a53c85e89ff95dce2a45b.tar.bz2
Faster sections.
Diffstat (limited to 'src/declarative/qml/qmlcontext.cpp')
-rw-r--r--src/declarative/qml/qmlcontext.cpp24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/declarative/qml/qmlcontext.cpp b/src/declarative/qml/qmlcontext.cpp
index c3971ae..445bf03 100644
--- a/src/declarative/qml/qmlcontext.cpp
+++ b/src/declarative/qml/qmlcontext.cpp
@@ -442,6 +442,30 @@ void QmlContext::setContextProperty(const QString &name, QObject *value)
}
}
+QVariant QmlContext::contextProperty(const QString &name) const
+{
+ Q_D(const QmlContext);
+ QVariant value;
+ int idx = -1;
+ if (d->propertyNames)
+ idx = d->propertyNames->value(name);
+
+ if (idx == -1) {
+ QByteArray utf8Name = name.toUtf8();
+ for (int ii = d->defaultObjects.count() - 1; ii >= 0; --ii) {
+ value = d->defaultObjects.at(ii)->property(utf8Name);
+ if (!value.isValid() && parentContext())
+ value = parentContext()->contextProperty(name);
+ if (value.isValid())
+ break;
+ }
+ } else {
+ value = d->propertyValues[idx];
+ }
+
+ return value;
+}
+
/*!
Resolves the URL \a src relative to the URL of the
containing component.