forked from qt-creator/qt-creator
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:
@@ -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);
|
||||
|
@@ -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;
|
||||
|
@@ -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()) {
|
||||
|
Reference in New Issue
Block a user