diff --git a/src/plugins/qmldesigner/components/navigator/nameitemdelegate.cpp b/src/plugins/qmldesigner/components/navigator/nameitemdelegate.cpp index e3a74031bca..01e4ead915f 100644 --- a/src/plugins/qmldesigner/components/navigator/nameitemdelegate.cpp +++ b/src/plugins/qmldesigner/components/navigator/nameitemdelegate.cpp @@ -216,12 +216,13 @@ void NameItemDelegate::paint(QPainter *painter, QByteArray dragType = widget->dragType(); const NodeMetaInfo metaInfo = node.metaInfo(); - auto isValid3dTextureTarget = [&metaInfo]() -> bool { - return metaInfo.isQtQuick3DModel() - || metaInfo.isQtQuick3DTexture() - || metaInfo.isQtQuick3DSceneEnvironment() - || metaInfo.isQtQuick3DTextureInput() - || metaInfo.isQtQuick3DParticles3DSpriteParticle3D(); + auto isValid3dTextureTarget = [&metaInfo, &node]() -> bool { + Model *model = node.model(); + return metaInfo.isBasedOn(model->qtQuick3DModelMetaInfo(), + model->qtQuick3DTextureMetaInfo(), + model->qtQuick3DSceneEnvironmentMetaInfo(), + model->qtQuick3DTextureInputMetaInfo(), + model->qtQuick3DParticles3DSpriteParticle3DMetaInfo()); }; bool validDrop = false; @@ -230,8 +231,9 @@ void NameItemDelegate::paint(QPainter *painter, } else if (dragType == Constants::MIME_TYPE_ASSET_TEXTURE3D) { validDrop = isValid3dTextureTarget(); } else if (dragType == Constants::MIME_TYPE_ASSET_IMAGE) { - validDrop = isValid3dTextureTarget() - || metaInfo.isQtQuickImage() || metaInfo.isQtQuickBorderImage(); + Model *model = node.model(); + validDrop = isValid3dTextureTarget() || metaInfo.isBasedOn(model->qtQuickImageMetaInfo(), + model->qtQuickBorderImageMetaInfo()); } else { const NodeMetaInfo dragInfo = node.model()->metaInfo(dragType); ChooseFromPropertyListFilter *filter = new ChooseFromPropertyListFilter(dragInfo, metaInfo, true); diff --git a/src/plugins/qmldesigner/libs/designercore/include/model.h b/src/plugins/qmldesigner/libs/designercore/include/model.h index 13754e56d10..534c0d7ed00 100644 --- a/src/plugins/qmldesigner/libs/designercore/include/model.h +++ b/src/plugins/qmldesigner/libs/designercore/include/model.h @@ -177,11 +177,15 @@ public: NodeMetaInfo qtQuick3DModelMetaInfo() const; NodeMetaInfo qtQuick3DNodeMetaInfo() const; NodeMetaInfo qtQuick3DOrthographicCameraMetaInfo() const; + NodeMetaInfo qtQuick3DParticles3DSpriteParticle3DMetaInfo() const; NodeMetaInfo qtQuick3DPerspectiveCameraMetaInfo() const; NodeMetaInfo qtQuick3DPointLightMetaInfo() const; NodeMetaInfo qtQuick3DPrincipledMaterialMetaInfo() const; + NodeMetaInfo qtQuick3DSceneEnvironmentMetaInfo() const; NodeMetaInfo qtQuick3DSpotLightMetaInfo() const; NodeMetaInfo qtQuick3DTextureMetaInfo() const; + NodeMetaInfo qtQuick3DTextureInputMetaInfo() const; + NodeMetaInfo qtQuickBorderImageMetaInfo() const; NodeMetaInfo qtQuickControlsTextAreaMetaInfo() const; NodeMetaInfo qtQuickImageMetaInfo() const; NodeMetaInfo qtQuickItemMetaInfo() const; diff --git a/src/plugins/qmldesigner/libs/designercore/model/model.cpp b/src/plugins/qmldesigner/libs/designercore/model/model.cpp index 183bc58d493..fbe59c06460 100644 --- a/src/plugins/qmldesigner/libs/designercore/model/model.cpp +++ b/src/plugins/qmldesigner/libs/designercore/model/model.cpp @@ -2545,6 +2545,16 @@ NodeMetaInfo Model::qtQuick3DOrthographicCameraMetaInfo() const } } +NodeMetaInfo Model::qtQuick3DParticles3DSpriteParticle3DMetaInfo() const +{ + if constexpr (useProjectStorage()) { + using namespace Storage::Info; + return createNodeMetaInfo(); + } else { + return metaInfo("QtQuick3D.Particles3D.SpriteParticle3D"); + } +} + NodeMetaInfo Model::qtQuick3DPerspectiveCameraMetaInfo() const { if constexpr (useProjectStorage()) { @@ -2564,6 +2574,26 @@ NodeMetaInfo Model::qtQuick3DTextureMetaInfo() const } } +NodeMetaInfo Model::qtQuick3DTextureInputMetaInfo() const +{ + if constexpr (useProjectStorage()) { + using namespace Storage::Info; + return createNodeMetaInfo(); + } else { + return metaInfo("QtQuick3D.TextureInput"); + } +} + +NodeMetaInfo Model::qtQuickBorderImageMetaInfo() const +{ + if constexpr (useProjectStorage()) { + using namespace Storage::Info; + return createNodeMetaInfo(); + } else { + return metaInfo("QtQuick.BorderImage"); + } +} + NodeMetaInfo Model::qtQuick3DBakedLightmapMetaInfo() const { if constexpr (useProjectStorage()) { @@ -2614,6 +2644,16 @@ NodeMetaInfo Model::qtQuick3DPrincipledMaterialMetaInfo() const } } +NodeMetaInfo Model::qtQuick3DSceneEnvironmentMetaInfo() const +{ + if constexpr (useProjectStorage()) { + using namespace Storage::Info; + return createNodeMetaInfo(); + } else { + return metaInfo("QtQuick3D.SceneEnvironment"); + } +} + NodeMetaInfo Model::qtQuickTimelineTimelineMetaInfo() const { if constexpr (useProjectStorage()) {