From dd71ea9cb6fd59ff78fd88c3c0abbfe0d111ea21 Mon Sep 17 00:00:00 2001 From: Roberto Raggi Date: Mon, 22 Aug 2011 13:46:33 +0200 Subject: [PATCH] Fix lookup of non scriptable default properties. Change-Id: I027169a54dc0041212d38aefc99164930c31d2b2 Reviewed-on: http://codereview.qt.nokia.com/3793 Reviewed-by: Roberto Raggi Reviewed-by: Qt Sanity Bot --- src/declarative/qml/qdeclarativecompiler.cpp | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/declarative/qml/qdeclarativecompiler.cpp b/src/declarative/qml/qdeclarativecompiler.cpp index 7ae571c..bd99a33 100644 --- a/src/declarative/qml/qdeclarativecompiler.cpp +++ b/src/declarative/qml/qdeclarativecompiler.cpp @@ -1578,13 +1578,6 @@ bool QDeclarativeCompiler::buildProperty(QDeclarativeParser::Property *prop, prop->value->metatype = type->attachedPropertiesType(); } else { // Setup regular property data - if (prop->isDefault) { - QMetaProperty p = QDeclarativeMetaType::defaultProperty(metaObject); - - if (p.name()) - prop->setName(p.name()); - } - bool notInRevision = false; QDeclarativePropertyCache::Data *d = prop->name().isEmpty()?0:property(obj, prop->name(), ¬InRevision); @@ -1600,6 +1593,14 @@ bool QDeclarativeCompiler::buildProperty(QDeclarativeParser::Property *prop, } else if (d) { prop->index = d->coreIndex; prop->core = *d; + } else if (prop->isDefault) { + QMetaProperty p = QDeclarativeMetaType::defaultProperty(metaObject); + QDeclarativePropertyCache::Data defaultPropertyData; + defaultPropertyData.load(p, engine); + if (p.name()) + prop->setName(p.name()); + prop->core = defaultPropertyData; + prop->index = prop->core.coreIndex; } // We can't error here as the "id" property does not require a -- 2.7.4