diff --git a/src/plugins/qmldesigner/libs/designercore/include/model.h b/src/plugins/qmldesigner/libs/designercore/include/model.h index 9c8bcd10827..3771ba00689 100644 --- a/src/plugins/qmldesigner/libs/designercore/include/model.h +++ b/src/plugins/qmldesigner/libs/designercore/include/model.h @@ -173,6 +173,7 @@ public: NodeMetaInfo qtQuick3DMaterialMetaInfo() const; NodeMetaInfo qtQuick3DModelMetaInfo() const; NodeMetaInfo qtQuick3DNodeMetaInfo() const; + NodeMetaInfo qtQuick3DObject3DMetaInfo() const; NodeMetaInfo qtQuick3DOrthographicCameraMetaInfo() const; NodeMetaInfo qtQuick3DParticles3DSpriteParticle3DMetaInfo() const; NodeMetaInfo qtQuick3DPerspectiveCameraMetaInfo() const; diff --git a/src/plugins/qmldesigner/libs/designercore/include/nodemetainfo.h b/src/plugins/qmldesigner/libs/designercore/include/nodemetainfo.h index fa867cce033..9d7e0c7d4d0 100644 --- a/src/plugins/qmldesigner/libs/designercore/include/nodemetainfo.h +++ b/src/plugins/qmldesigner/libs/designercore/include/nodemetainfo.h @@ -189,6 +189,7 @@ public: bool isQtQuickListView() const; bool isQtQuickGridView() const; bool isQtQuick3DMaterial() const; +<<<<<<< HEAD (8777d4 qds: increase version to 4.7.2) bool isQtQuick3DModel() const; bool isQtQuick3DNode() const; bool isQtQuick3DParticlesAbstractShape() const; @@ -249,6 +250,69 @@ public: bool isVector4D() const; bool isView() const; bool usesCustomParser() const; +======= + bool isQtQuick3DModel(SL sl = {}) const; + bool isQtQuick3DNode(SL sl = {}) const; + bool isQtQuick3DObject3D(SL sl = {}) const; + bool isQtQuick3DParticlesAbstractShape(SL sl = {}) const; + bool isQtQuick3DParticles3DAffector3D(SL sl = {}) const; + bool isQtQuick3DParticles3DAttractor3D(SL sl = {}) const; + bool isQtQuick3DParticles3DParticle3D(SL sl = {}) const; + bool isQtQuick3DParticles3DParticleEmitter3D(SL sl = {}) const; + bool isQtQuick3DParticles3DSpriteParticle3D(SL sl = {}) const; + bool isQtQuick3DPass(SL sl = {}) const; + bool isQtQuick3DPrincipledMaterial(SL sl = {}) const; + bool isQtQuick3DSpecularGlossyMaterial(SL sl = {}) const; + bool isQtQuick3DSceneEnvironment(SL sl = {}) const; + bool isQtQuick3DShader(SL sl = {}) const; + bool isQtQuick3DTexture(SL sl = {}) const; + bool isQtQuick3DTextureInput(SL sl = {}) const; + bool isQtQuick3DCubeMapTexture(SL sl = {}) const; + bool isQtQuick3DView3D(SL sl = {}) const; + bool isQtQuickBorderImage(SL sl = {}) const; + bool isQtQuickControlsLabel(SL sl = {}) const; + bool isQtQuickControlsSwipeView(SL sl = {}) const; + bool isQtQuickControlsTabBar(SL sl = {}) const; + bool isQtQuickExtrasPicture(SL sl = {}) const; + bool isQtQuickGradient(SL sl = {}) const; + bool isQtQuickImage(SL sl = {}) const; + bool isQtQuickItem(SL sl = {}) const; + bool isQtQuickLayoutsLayout(SL sl = {}) const; + bool isQtQuickLoader(SL sl = {}) const; + bool isQtQuickPath(SL sl = {}) const; + bool isQtQuickPauseAnimation(SL sl = {}) const; + bool isQtQuickPositioner(SL sl = {}) const; + bool isQtQuickPropertyAnimation(SL sl = {}) const; + bool isQtQuickPropertyChanges(SL sl = {}) const; + bool isQtQuickRectangle(SL sl = {}) const; + bool isQtQuickRepeater(SL sl = {}) const; + bool isQtQuickShapesShape(SL sl = {}) const; + bool isQtQuickState(SL sl = {}) const; + bool isQtQuickStateGroup(SL sl = {}) const; + bool isQtQuickStateOperation(SL sl = {}) const; + bool isQtQuickStudioComponentsArcItem(SL sl = {}) const; + bool isQtQuickStudioComponentsGroupItem(SL sl = {}) const; + bool isQtQuickStudioComponentsSvgPathItem(SL sl = {}) const; + bool isQtQuickStudioUtilsJsonListModel(SL sl = {}) const; + bool isQtQuickText(SL sl = {}) const; + bool isQtQuickTimelineKeyframe(SL sl = {}) const; + bool isQtQuickTimelineKeyframeGroup(SL sl = {}) const; + bool isQtQuickTimelineTimeline(SL sl = {}) const; + bool isQtQuickTimelineTimelineAnimation(SL sl = {}) const; + bool isQtQuickTransition(SL sl = {}) const; + bool isQtQuickWindowWindow(SL sl = {}) const; + bool isQtSafeRendererSafePicture(SL sl = {}) const; + bool isQtSafeRendererSafeRendererPicture(SL sl = {}) const; + bool isString(SL sl = {}) const; + bool isSuitableForMouseAreaFill(SL sl = {}) const; + bool isUrl(SL sl = {}) const; + bool isVariant(SL sl = {}) const; + bool isVector2D(SL sl = {}) const; + bool isVector3D(SL sl = {}) const; + bool isVector4D(SL sl = {}) const; + bool isView(SL sl = {}) const; + bool usesCustomParser(SL sl = {}) const; +>>>>>>> CHANGE (472b88 QmlDesigner: Fix drag & drop 3D components into 2D/3D view) bool isEnumeration() const; #ifndef QDS_USE_PROJECTSTORAGE diff --git a/src/plugins/qmldesigner/libs/designercore/metainfo/nodemetainfo.cpp b/src/plugins/qmldesigner/libs/designercore/metainfo/nodemetainfo.cpp index b0320704fc9..5221797a8c5 100644 --- a/src/plugins/qmldesigner/libs/designercore/metainfo/nodemetainfo.cpp +++ b/src/plugins/qmldesigner/libs/designercore/metainfo/nodemetainfo.cpp @@ -4156,7 +4156,30 @@ bool NodeMetaInfo::isQtQuick3DNode() const } } +<<<<<<< HEAD (8777d4 qds: increase version to 4.7.2) bool NodeMetaInfo::isQtQuick3DParticles3DAffector3D() const +======= +bool NodeMetaInfo::isQtQuick3DObject3D(SL sl) const +{ + if constexpr (useProjectStorage()) { + if (!isValid()) + return false; + + using NanotraceHR::keyValue; + NanotraceHR::Tracer tracer{"is QtQuick3D.Object3D", + category(), + keyValue("type id", m_typeId), + keyValue("caller location", sl)}; + + using namespace Storage::Info; + return isBasedOnCommonType(m_projectStorage, m_typeId); + } else { + return isValid() && isSubclassOf("QtQuick3D.Object3D"); + } +} + +bool NodeMetaInfo::isQtQuick3DParticles3DAffector3D(SL sl) const +>>>>>>> CHANGE (472b88 QmlDesigner: Fix drag & drop 3D components into 2D/3D view) { if constexpr (useProjectStorage()) { if (!isValid()) diff --git a/src/plugins/qmldesigner/libs/designercore/metainfo/subcomponentmanager.cpp b/src/plugins/qmldesigner/libs/designercore/metainfo/subcomponentmanager.cpp index 82ea48900aa..51571429e2e 100644 --- a/src/plugins/qmldesigner/libs/designercore/metainfo/subcomponentmanager.cpp +++ b/src/plugins/qmldesigner/libs/designercore/metainfo/subcomponentmanager.cpp @@ -372,6 +372,16 @@ void SubComponentManager::registerQmlFile(const QFileInfo &fileInfo, const QStri if (!qualifier.isEmpty()) itemLibraryEntry.setRequiredImport(fixedQualifier); + const NodeMetaInfo nodeMetaInfo = model()->metaInfo(baseComponentName.toUtf8()); + if (nodeMetaInfo.isValid()) { + QHash hints; + if (nodeMetaInfo.isBasedOn(model()->qtQuick3DObject3DMetaInfo())) + hints["canBeDroppedInFormEditor"] = "false"; + if (nodeMetaInfo.isBasedOn(model()->qtQuick3DNodeMetaInfo())) + hints["canBeDroppedInView3D"] = "true"; + itemLibraryEntry.addHints(hints); + } + if (!model()->metaInfo().itemLibraryInfo()->containsEntry(itemLibraryEntry)) model()->metaInfo().itemLibraryInfo()->addEntries({itemLibraryEntry}); } diff --git a/src/plugins/qmldesigner/libs/designercore/model/model.cpp b/src/plugins/qmldesigner/libs/designercore/model/model.cpp index eac261eca8c..2d2c9cbebc6 100644 --- a/src/plugins/qmldesigner/libs/designercore/model/model.cpp +++ b/src/plugins/qmldesigner/libs/designercore/model/model.cpp @@ -2544,6 +2544,16 @@ NodeMetaInfo Model::qtQuick3DNodeMetaInfo() const } } +NodeMetaInfo Model::qtQuick3DObject3DMetaInfo() const +{ + if constexpr (useProjectStorage()) { + using namespace Storage::Info; + return createNodeMetaInfo(); + } else { + return metaInfo("QtQuick3D.Object3D"); + } +} + NodeMetaInfo Model::qtQuick3DPointLightMetaInfo() const { if constexpr (useProjectStorage()) { diff --git a/src/plugins/qmldesigner/libs/designercore/projectstorage/commontypecache.h b/src/plugins/qmldesigner/libs/designercore/projectstorage/commontypecache.h index c979052a676..a69251db2fe 100644 --- a/src/plugins/qmldesigner/libs/designercore/projectstorage/commontypecache.h +++ b/src/plugins/qmldesigner/libs/designercore/projectstorage/commontypecache.h @@ -71,6 +71,7 @@ inline constexpr char Material[] = "Material"; inline constexpr char Model[] = "Model"; inline constexpr char MouseArea[] = "MouseArea"; inline constexpr char Node[] = "Node"; +inline constexpr char Object3D[] = "Object3D"; inline constexpr char OrthographicCamera[] = "OrthographicCamera"; inline constexpr char Particle3D[] = "Particle3D"; inline constexpr char ParticleEmitter3D[] = "ParticleEmitter3D"; @@ -223,6 +224,7 @@ class CommonTypeCache CacheType, CacheType, CacheType, + CacheType, CacheType, CacheType, CacheType,