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();
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);

View File

@@ -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;

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
{
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
{
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
{
if constexpr (useProjectStorage()) {