diff options
author | Thomas Hartmann <thomas.hartmann@qt.io> | 2022-03-24 17:43:23 +0100 |
---|---|---|
committer | Thomas Hartmann <thomas.hartmann@qt.io> | 2022-03-24 17:10:55 +0000 |
commit | aabff7bd35595309c34251d6fccb1484a9078d86 (patch) | |
tree | a481032193afa9b877d9557186483f36085d019c | |
parent | 3b5c56bcfad99dd702a319ca56a07d845ec9680f (diff) |
QmlDesigner: Fix puppet crash with DelegateModel
Change-Id: Ibe42b87b6364c78157c54504f00354bff8bb4b23
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
-rw-r--r-- | share/qtcreator/qml/qmlpuppet/qmlprivategate/qmlprivategate_56.cpp | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/share/qtcreator/qml/qmlpuppet/qmlprivategate/qmlprivategate_56.cpp b/share/qtcreator/qml/qmlpuppet/qmlprivategate/qmlprivategate_56.cpp index 3213d50786..c9f2820b74 100644 --- a/share/qtcreator/qml/qmlpuppet/qmlprivategate/qmlprivategate_56.cpp +++ b/share/qtcreator/qml/qmlpuppet/qmlprivategate/qmlprivategate_56.cpp @@ -185,13 +185,13 @@ void registerNodeInstanceMetaObject(QObject *object, QQmlEngine *engine) QQuickDesignerSupportProperties::registerNodeInstanceMetaObject(object, engine); } -static bool isQuickStyleItemMetaObject(const QMetaObject *metaObject) +static bool isMetaObjectofType(const QMetaObject *metaObject, const QByteArray &type) { if (metaObject) { - if (metaObject->className() == QByteArrayLiteral("QQuickStyleItem")) + if (metaObject->className() == type) return true; - return isQuickStyleItemMetaObject(metaObject->superClass()); + return isMetaObjectofType(metaObject->superClass(), type); } return false; @@ -200,7 +200,15 @@ static bool isQuickStyleItemMetaObject(const QMetaObject *metaObject) static bool isQuickStyleItem(QObject *object) { if (object) - return isQuickStyleItemMetaObject(object->metaObject()); + return isMetaObjectofType(object->metaObject(), "QQuickStyleItem"); + + return false; +} + +static bool isDelegateModel(QObject *object) +{ + if (object) + return isMetaObjectofType(object->metaObject(), "QQmlDelegateModel"); return false; } @@ -400,7 +408,7 @@ void doComponentCompleteRecursive(QObject *object, NodeInstanceServer *nodeInsta doComponentCompleteRecursive(child, nodeInstanceServer); } - if (!isQuickStyleItem(item)) { + if (!isQuickStyleItem(object) && !isDelegateModel(object)) { if (item) { static_cast<QQmlParserStatus *>(item)->componentComplete(); } else { |