diff options
author | Martin Jones <martin.jones@nokia.com> | 2009-12-16 02:12:49 (GMT) |
---|---|---|
committer | Martin Jones <martin.jones@nokia.com> | 2009-12-16 02:12:49 (GMT) |
commit | 3f9d0888c7ad79063b8a53c85e89ff95dce2a45b (patch) | |
tree | d4427258a913c83b217ee7822e6775fd31c23dcc /src/declarative/qml | |
parent | 211a63a1e3669055e28dfba4cff1e2b7f6e5e3ca (diff) | |
download | Qt-3f9d0888c7ad79063b8a53c85e89ff95dce2a45b.zip Qt-3f9d0888c7ad79063b8a53c85e89ff95dce2a45b.tar.gz Qt-3f9d0888c7ad79063b8a53c85e89ff95dce2a45b.tar.bz2 |
Faster sections.
Diffstat (limited to 'src/declarative/qml')
-rw-r--r-- | src/declarative/qml/qmlcontext.cpp | 24 | ||||
-rw-r--r-- | src/declarative/qml/qmlcontext.h | 2 |
2 files changed, 26 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. diff --git a/src/declarative/qml/qmlcontext.h b/src/declarative/qml/qmlcontext.h index de1d092..7547004 100644 --- a/src/declarative/qml/qmlcontext.h +++ b/src/declarative/qml/qmlcontext.h @@ -75,6 +75,8 @@ public: void setContextProperty(const QString &, QObject *); void setContextProperty(const QString &, const QVariant &); + QVariant contextProperty(const QString &) const; + QUrl resolvedUrl(const QUrl &); void setBaseUrl(const QUrl &); |