diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/objectnodeinstance.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/objectnodeinstance.cpp index 6bd10a2e0b8..8cd156345da 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/objectnodeinstance.cpp +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/objectnodeinstance.cpp @@ -605,14 +605,22 @@ ObjectNodeInstance::Pointer ObjectNodeInstance::create(QObject *object) QObject *ObjectNodeInstance::createPrimitive(const QString &typeName, int majorNumber, int minorNumber, QQmlContext *context) { - QObject *object = QmlPrivateGate::createPrimitive(typeName, majorNumber, minorNumber, context); + QString polishTypeName = typeName; + if (typeName == "QtQuick.Controls/Popup" + || typeName == "QtQuick.Controls/Drawer" + || typeName == "QtQuick.Controls/Dialog" + || typeName == "QtQuick.Controls/Menu" + || typeName == "QtQuick.Controls/ToolTip") + polishTypeName = "QtQuick/Item"; + + QObject *object = QmlPrivateGate::createPrimitive(polishTypeName, majorNumber, minorNumber, context); /* Let's try to create the primitive from source, since with incomplete meta info this might be a pure * QML type. This is the case for example if a C++ type is mocked up with a QML file. */ if (!object) - object = createPrimitiveFromSource(typeName, majorNumber, minorNumber, context); + object = createPrimitiveFromSource(polishTypeName, majorNumber, minorNumber, context); return object; } diff --git a/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp b/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp index 6c5650359dc..17b1cf08628 100644 --- a/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp +++ b/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp @@ -1560,7 +1560,9 @@ bool NodeMetaInfo::isSubclassOf(const TypeName &type, int majorVersion, int mino bool NodeMetaInfo::isGraphicalItem() const { - return isSubclassOf("QtQuick.Item") || isSubclassOf("QtQuick.Window.Window"); + return isSubclassOf("QtQuick.Item") + || isSubclassOf("QtQuick.Window.Window") + || isSubclassOf("QtQuick.Controls.Popup"); } void NodeMetaInfo::clearCache() diff --git a/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp b/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp index fa3f719ae29..4345a87c8eb 100644 --- a/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp +++ b/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp @@ -54,6 +54,9 @@ bool QmlItemNode::isItemOrWindow(const ModelNode &modelNode) if (modelNode.metaInfo().isSubclassOf("QtQuick.Window.Window") && modelNode.isRootNode()) return true; + if (modelNode.metaInfo().isSubclassOf("QtQuick.Controls.Popup")) + return true; + return false; }