forked from qt-creator/qt-creator
QmlDesigner: Fix puppet crash with DelegateModel
Change-Id: Ibe42b87b6364c78157c54504f00354bff8bb4b23 Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
@@ -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 {
|
||||||
|
Reference in New Issue
Block a user