QmlDesigner: Fix puppet crash with DelegateModel

Change-Id: Ibe42b87b6364c78157c54504f00354bff8bb4b23
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
Thomas Hartmann
2022-03-24 17:43:23 +01:00
parent 3b5c56bcfa
commit aabff7bd35

View File

@@ -185,13 +185,13 @@ void registerNodeInstanceMetaObject(QObject *object, QQmlEngine *engine)
QQuickDesignerSupportProperties::registerNodeInstanceMetaObject(object, engine); QQuickDesignerSupportProperties::registerNodeInstanceMetaObject(object, engine);
} }
static bool isQuickStyleItemMetaObject(const QMetaObject *metaObject) static bool isMetaObjectofType(const QMetaObject *metaObject, const QByteArray &type)
{ {
if (metaObject) { if (metaObject) {
if (metaObject->className() == QByteArrayLiteral("QQuickStyleItem")) if (metaObject->className() == type)
return true; return true;
return isQuickStyleItemMetaObject(metaObject->superClass()); return isMetaObjectofType(metaObject->superClass(), type);
} }
return false; return false;
@@ -200,7 +200,15 @@ static bool isQuickStyleItemMetaObject(const QMetaObject *metaObject)
static bool isQuickStyleItem(QObject *object) static bool isQuickStyleItem(QObject *object)
{ {
if (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; return false;
} }
@@ -400,7 +408,7 @@ void doComponentCompleteRecursive(QObject *object, NodeInstanceServer *nodeInsta
doComponentCompleteRecursive(child, nodeInstanceServer); doComponentCompleteRecursive(child, nodeInstanceServer);
} }
if (!isQuickStyleItem(item)) { if (!isQuickStyleItem(object) && !isDelegateModel(object)) {
if (item) { if (item) {
static_cast<QQmlParserStatus *>(item)->componentComplete(); static_cast<QQmlParserStatus *>(item)->componentComplete();
} else { } else {