diff --git a/src/libs/qmljs/qmljsinterpreter.cpp b/src/libs/qmljs/qmljsinterpreter.cpp index 47c69c3a922ec963d575c3641e2609477865ce35..dea04577a902c8ab98bd14d2e8a6453ddeb40a4b 100644 --- a/src/libs/qmljs/qmljsinterpreter.cpp +++ b/src/libs/qmljs/qmljsinterpreter.cpp @@ -199,6 +199,7 @@ class FakeMetaObject { QList<FakeMetaEnum> m_enums; QList<FakeMetaProperty> m_props; QList<FakeMetaMethod> m_methods; + QString m_defaultPropertyName; public: FakeMetaObject(const QString &name, const QString &package, int majorVersion, int minorVersion) @@ -250,6 +251,12 @@ public: { return m_major; } int minorVersion() const { return m_minor; } + + QString defaultPropertyName() const + { return m_defaultPropertyName; } + + void setDefaultPropertyName(const QString defaultPropertyName) + { m_defaultPropertyName = defaultPropertyName; } }; } // end of Interpreter namespace @@ -364,7 +371,7 @@ private: const QLatin1String tag("type"); Q_ASSERT(_xml.isStartElement() && _xml.name() == tag); - QString name; + QString name, defaultPropertyName; int major = -1, minor = -1; QString extends; foreach (const QXmlStreamAttribute &attr, _xml.attributes()) { @@ -398,6 +405,8 @@ private: return; } } + } else if (attr.name() == QLatin1String("defaultProperty")) { + defaultPropertyName = attr.value().toString(); } else if (attr.name() == QLatin1String("extends")) { if (! attr.value().isEmpty()) extends = attr.value().toString(); @@ -412,6 +421,8 @@ private: major, minor); if (! extends.isEmpty()) metaObject->setSuperclassName(extends); + if (! defaultPropertyName.isEmpty()) + metaObject->setDefaultPropertyName(defaultPropertyName); while (_xml.readNextStartElement()) { if (_xml.name() == QLatin1String("property")) @@ -830,6 +841,9 @@ int QmlObjectValue::majorVersion() const int QmlObjectValue::minorVersion() const { return _metaObject->minorVersion(); } +QString QmlObjectValue::defaultPropertyName() const +{ return _metaObject->defaultPropertyName(); } + bool QmlObjectValue::isDerivedFrom(const FakeMetaObject *base) const { for (const FakeMetaObject *iter = _metaObject; iter; iter = iter->superClass()) { diff --git a/src/libs/qmljs/qmljsinterpreter.h b/src/libs/qmljs/qmljsinterpreter.h index 83bcce2be8eca9f5c6a16535202867da8421679a..76b779a7735715be9b1a7ded22b515bf75e086e4 100644 --- a/src/libs/qmljs/qmljsinterpreter.h +++ b/src/libs/qmljs/qmljsinterpreter.h @@ -417,6 +417,7 @@ public: QString packageName() const; int majorVersion() const; int minorVersion() const; + QString defaultPropertyName() const; protected: const Value *findOrCreateSignature(int index, const FakeMetaMethod &method, QString *methodName) const;