QmlDesigner: Optimize some metainfo checks

Use isBasedOn() when checking for multiple types.

Change-Id: I37751c4b3e6238caf39e705f7b68fb1800f2549d
Reviewed-by: Marco Bubke <marco.bubke@qt.io>
This commit is contained in:
Miikka Heikkinen
2024-09-06 11:56:42 +03:00
parent 340f1ce19a
commit 6a50339e67
3 changed files with 54 additions and 8 deletions

View File

@@ -216,12 +216,13 @@ void NameItemDelegate::paint(QPainter *painter,
QByteArray dragType = widget->dragType(); QByteArray dragType = widget->dragType();
const NodeMetaInfo metaInfo = node.metaInfo(); const NodeMetaInfo metaInfo = node.metaInfo();
auto isValid3dTextureTarget = [&metaInfo]() -> bool { auto isValid3dTextureTarget = [&metaInfo, &node]() -> bool {
return metaInfo.isQtQuick3DModel() Model *model = node.model();
|| metaInfo.isQtQuick3DTexture() return metaInfo.isBasedOn(model->qtQuick3DModelMetaInfo(),
|| metaInfo.isQtQuick3DSceneEnvironment() model->qtQuick3DTextureMetaInfo(),
|| metaInfo.isQtQuick3DTextureInput() model->qtQuick3DSceneEnvironmentMetaInfo(),
|| metaInfo.isQtQuick3DParticles3DSpriteParticle3D(); model->qtQuick3DTextureInputMetaInfo(),
model->qtQuick3DParticles3DSpriteParticle3DMetaInfo());
}; };
bool validDrop = false; bool validDrop = false;
@@ -230,8 +231,9 @@ void NameItemDelegate::paint(QPainter *painter,
} else if (dragType == Constants::MIME_TYPE_ASSET_TEXTURE3D) { } else if (dragType == Constants::MIME_TYPE_ASSET_TEXTURE3D) {
validDrop = isValid3dTextureTarget(); validDrop = isValid3dTextureTarget();
} else if (dragType == Constants::MIME_TYPE_ASSET_IMAGE) { } else if (dragType == Constants::MIME_TYPE_ASSET_IMAGE) {
validDrop = isValid3dTextureTarget() Model *model = node.model();
|| metaInfo.isQtQuickImage() || metaInfo.isQtQuickBorderImage(); validDrop = isValid3dTextureTarget() || metaInfo.isBasedOn(model->qtQuickImageMetaInfo(),
model->qtQuickBorderImageMetaInfo());
} else { } else {
const NodeMetaInfo dragInfo = node.model()->metaInfo(dragType); const NodeMetaInfo dragInfo = node.model()->metaInfo(dragType);
ChooseFromPropertyListFilter *filter = new ChooseFromPropertyListFilter(dragInfo, metaInfo, true); ChooseFromPropertyListFilter *filter = new ChooseFromPropertyListFilter(dragInfo, metaInfo, true);

View File

@@ -177,11 +177,15 @@ public:
NodeMetaInfo qtQuick3DModelMetaInfo() const; NodeMetaInfo qtQuick3DModelMetaInfo() const;
NodeMetaInfo qtQuick3DNodeMetaInfo() const; NodeMetaInfo qtQuick3DNodeMetaInfo() const;
NodeMetaInfo qtQuick3DOrthographicCameraMetaInfo() const; NodeMetaInfo qtQuick3DOrthographicCameraMetaInfo() const;
NodeMetaInfo qtQuick3DParticles3DSpriteParticle3DMetaInfo() const;
NodeMetaInfo qtQuick3DPerspectiveCameraMetaInfo() const; NodeMetaInfo qtQuick3DPerspectiveCameraMetaInfo() const;
NodeMetaInfo qtQuick3DPointLightMetaInfo() const; NodeMetaInfo qtQuick3DPointLightMetaInfo() const;
NodeMetaInfo qtQuick3DPrincipledMaterialMetaInfo() const; NodeMetaInfo qtQuick3DPrincipledMaterialMetaInfo() const;
NodeMetaInfo qtQuick3DSceneEnvironmentMetaInfo() const;
NodeMetaInfo qtQuick3DSpotLightMetaInfo() const; NodeMetaInfo qtQuick3DSpotLightMetaInfo() const;
NodeMetaInfo qtQuick3DTextureMetaInfo() const; NodeMetaInfo qtQuick3DTextureMetaInfo() const;
NodeMetaInfo qtQuick3DTextureInputMetaInfo() const;
NodeMetaInfo qtQuickBorderImageMetaInfo() const;
NodeMetaInfo qtQuickControlsTextAreaMetaInfo() const; NodeMetaInfo qtQuickControlsTextAreaMetaInfo() const;
NodeMetaInfo qtQuickImageMetaInfo() const; NodeMetaInfo qtQuickImageMetaInfo() const;
NodeMetaInfo qtQuickItemMetaInfo() const; NodeMetaInfo qtQuickItemMetaInfo() const;

View File

@@ -2545,6 +2545,16 @@ NodeMetaInfo Model::qtQuick3DOrthographicCameraMetaInfo() const
} }
} }
NodeMetaInfo Model::qtQuick3DParticles3DSpriteParticle3DMetaInfo() const
{
if constexpr (useProjectStorage()) {
using namespace Storage::Info;
return createNodeMetaInfo<QtQuick3D_Particles3D, SpriteParticle3D>();
} else {
return metaInfo("QtQuick3D.Particles3D.SpriteParticle3D");
}
}
NodeMetaInfo Model::qtQuick3DPerspectiveCameraMetaInfo() const NodeMetaInfo Model::qtQuick3DPerspectiveCameraMetaInfo() const
{ {
if constexpr (useProjectStorage()) { if constexpr (useProjectStorage()) {
@@ -2564,6 +2574,26 @@ NodeMetaInfo Model::qtQuick3DTextureMetaInfo() const
} }
} }
NodeMetaInfo Model::qtQuick3DTextureInputMetaInfo() const
{
if constexpr (useProjectStorage()) {
using namespace Storage::Info;
return createNodeMetaInfo<QtQuick3D, TextureInput>();
} else {
return metaInfo("QtQuick3D.TextureInput");
}
}
NodeMetaInfo Model::qtQuickBorderImageMetaInfo() const
{
if constexpr (useProjectStorage()) {
using namespace Storage::Info;
return createNodeMetaInfo<QtQuick, BorderImage>();
} else {
return metaInfo("QtQuick.BorderImage");
}
}
NodeMetaInfo Model::qtQuick3DBakedLightmapMetaInfo() const NodeMetaInfo Model::qtQuick3DBakedLightmapMetaInfo() const
{ {
if constexpr (useProjectStorage()) { if constexpr (useProjectStorage()) {
@@ -2614,6 +2644,16 @@ NodeMetaInfo Model::qtQuick3DPrincipledMaterialMetaInfo() const
} }
} }
NodeMetaInfo Model::qtQuick3DSceneEnvironmentMetaInfo() const
{
if constexpr (useProjectStorage()) {
using namespace Storage::Info;
return createNodeMetaInfo<QtQuick3D, SceneEnvironment>();
} else {
return metaInfo("QtQuick3D.SceneEnvironment");
}
}
NodeMetaInfo Model::qtQuickTimelineTimelineMetaInfo() const NodeMetaInfo Model::qtQuickTimelineTimelineMetaInfo() const
{ {
if constexpr (useProjectStorage()) { if constexpr (useProjectStorage()) {