summaryrefslogtreecommitdiffstats
path: root/src/declarative/qml/qdeclarativeobjectscriptclass.cpp
diff options
context:
space:
mode:
authorMartin Jones <martin.jones@nokia.com>2011-01-05 03:57:17 (GMT)
committerMartin Jones <martin.jones@nokia.com>2011-01-05 03:57:17 (GMT)
commitffd499eb6ff64df1833625f64dbbf92e0e0746d4 (patch)
treecb1dcd382fe2e76638cf853c96cf0316cce65636 /src/declarative/qml/qdeclarativeobjectscriptclass.cpp
parent3f80a24c5d375dd173d18c2a4227301f1afba2e3 (diff)
downloadQt-ffd499eb6ff64df1833625f64dbbf92e0e0746d4.zip
Qt-ffd499eb6ff64df1833625f64dbbf92e0e0746d4.tar.gz
Qt-ffd499eb6ff64df1833625f64dbbf92e0e0746d4.tar.bz2
Support property/method versions in QML
Use metaobject revisioning to exclude properties/revisions added in later versions from interfering with earlier versions. Task-number: QTBUG-13451 Reviewed-by: Aaron Kennedy
Diffstat (limited to 'src/declarative/qml/qdeclarativeobjectscriptclass.cpp')
-rw-r--r--src/declarative/qml/qdeclarativeobjectscriptclass.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/declarative/qml/qdeclarativeobjectscriptclass.cpp b/src/declarative/qml/qdeclarativeobjectscriptclass.cpp
index b0bc5bb..090eeda 100644
--- a/src/declarative/qml/qdeclarativeobjectscriptclass.cpp
+++ b/src/declarative/qml/qdeclarativeobjectscriptclass.cpp
@@ -166,6 +166,20 @@ QDeclarativeObjectScriptClass::queryProperty(QObject *obj, const Identifier &nam
QDeclarativeEnginePrivate *enginePrivate = QDeclarativeEnginePrivate::get(engine);
lastData = QDeclarativePropertyCache::property(engine, obj, name, local);
+ if (lastData && lastData->revision > 0 && (hints & ImplicitObject)) {
+ QDeclarativeData *data = QDeclarativeData::get(obj);
+ if (data) {
+ if (!data->type) {
+ lastData = 0;
+ } else if (lastData->flags & QDeclarativePropertyCache::Data::IsFunction) {
+ if (!data->type->isMethodAvailable(lastData->coreIndex, lastData->revision))
+ lastData = 0;
+ } else if (!data->type->isPropertyAvailable(lastData->coreIndex, lastData->revision)) {
+ lastData = 0;
+ }
+ }
+ }
+
if (lastData)
return QScriptClass::HandlesReadAccess | QScriptClass::HandlesWriteAccess;