forked from qt-creator/qt-creator
qmltypes: Handle extension property
Previously Qt Creator ignored the extension property in qmltypes leading to auto-complete being unavailable for some properties of extended types among other things. Change-Id: I1bc13b3daf9bbd0a835e9a25f52b9589ad942e75 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
This commit is contained in:
@@ -369,6 +369,11 @@ QString FakeMetaObject::attachedTypeName() const
|
|||||||
void FakeMetaObject::setAttachedTypeName(const QString &name)
|
void FakeMetaObject::setAttachedTypeName(const QString &name)
|
||||||
{ m_attachedTypeName = name; }
|
{ m_attachedTypeName = name; }
|
||||||
|
|
||||||
|
QString FakeMetaObject::extensionTypeName() const
|
||||||
|
{ return m_extensionTypeName; }
|
||||||
|
void FakeMetaObject::setExtensionTypeName(const QString &name)
|
||||||
|
{ m_extensionTypeName = name; }
|
||||||
|
|
||||||
QByteArray FakeMetaObject::calculateFingerprint() const
|
QByteArray FakeMetaObject::calculateFingerprint() const
|
||||||
{
|
{
|
||||||
QCryptographicHash hash(QCryptographicHash::Sha1);
|
QCryptographicHash hash(QCryptographicHash::Sha1);
|
||||||
|
|||||||
@@ -170,6 +170,7 @@ private:
|
|||||||
QList<FakeMetaMethod> m_methods;
|
QList<FakeMetaMethod> m_methods;
|
||||||
QString m_defaultPropertyName;
|
QString m_defaultPropertyName;
|
||||||
QString m_attachedTypeName;
|
QString m_attachedTypeName;
|
||||||
|
QString m_extensionTypeName;
|
||||||
QByteArray m_fingerprint;
|
QByteArray m_fingerprint;
|
||||||
bool m_isSingleton;
|
bool m_isSingleton;
|
||||||
bool m_isCreatable;
|
bool m_isCreatable;
|
||||||
@@ -212,6 +213,8 @@ public:
|
|||||||
|
|
||||||
QString attachedTypeName() const;
|
QString attachedTypeName() const;
|
||||||
void setAttachedTypeName(const QString &name);
|
void setAttachedTypeName(const QString &name);
|
||||||
|
QString extensionTypeName() const;
|
||||||
|
void setExtensionTypeName(const QString &name);
|
||||||
QByteArray calculateFingerprint() const;
|
QByteArray calculateFingerprint() const;
|
||||||
void updateFingerprint();
|
void updateFingerprint();
|
||||||
QByteArray fingerprint() const;
|
QByteArray fingerprint() const;
|
||||||
|
|||||||
@@ -358,6 +358,14 @@ void CppComponentValue::processMembers(MemberProcessor *processor) const
|
|||||||
attachedType->processMembers(processor);
|
attachedType->processMembers(processor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// look at extension types
|
||||||
|
const QString &extensionTypeName = m_metaObject->extensionTypeName();
|
||||||
|
if (!extensionTypeName.isEmpty()) {
|
||||||
|
const CppComponentValue *extensionType = valueOwner()->cppQmlTypes().objectByCppName(extensionTypeName);
|
||||||
|
if (extensionType && extensionType != this) // ### only weak protection against infinite loops
|
||||||
|
extensionType->processMembers(processor);
|
||||||
|
}
|
||||||
|
|
||||||
ObjectValue::processMembers(processor);
|
ObjectValue::processMembers(processor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -228,6 +228,8 @@ void TypeDescriptionReader::readComponent(UiObjectDefinition *ast)
|
|||||||
readMetaObjectRevisions(script, fmo);
|
readMetaObjectRevisions(script, fmo);
|
||||||
} else if (name == QLatin1String("attachedType")) {
|
} else if (name == QLatin1String("attachedType")) {
|
||||||
fmo->setAttachedTypeName(readStringBinding(script));
|
fmo->setAttachedTypeName(readStringBinding(script));
|
||||||
|
} else if (name == QLatin1String("extension")) {
|
||||||
|
fmo->setExtensionTypeName(readStringBinding(script));
|
||||||
} else if (name == QLatin1String("isSingleton")) {
|
} else if (name == QLatin1String("isSingleton")) {
|
||||||
fmo->setIsSingleton(readBoolBinding(script));
|
fmo->setIsSingleton(readBoolBinding(script));
|
||||||
} else if (name == QLatin1String("isCreatable")) {
|
} else if (name == QLatin1String("isCreatable")) {
|
||||||
|
|||||||
Reference in New Issue
Block a user