aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Hartmann <thomas.hartmann@qt.io>2022-03-24 17:43:23 +0100
committerThomas Hartmann <thomas.hartmann@qt.io>2022-03-24 17:10:55 +0000
commitaabff7bd35595309c34251d6fccb1484a9078d86 (patch)
treea481032193afa9b877d9557186483f36085d019c
parent3b5c56bcfad99dd702a319ca56a07d845ec9680f (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.cpp18
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 {