From 626e1175a60145cedbf177a8df1f4beabfdf45d4 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 16 Nov 2022 14:11:06 +0100 Subject: [PATCH] QmlDesigner: Do not specify version if it is -1 -1 Otherwise isBasedOn works differently than isSubclassOf for file components. File components do not have a version. Change-Id: If7009538ef97d119a348da99ed07919136c8b6e1 Reviewed-by: Tim Jenssen --- .../designercore/metainfo/nodemetainfo.cpp | 38 +++++++++++-------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp b/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp index 1996ed79202..927b762ffec 100644 --- a/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp +++ b/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp @@ -1704,8 +1704,11 @@ bool NodeMetaInfo::isBasedOn(const NodeMetaInfo &metaInfo) const if constexpr (useProjectStorage()) { return m_projectStorage->isBasedOn(m_typeId, metaInfo.m_typeId); } else { - return isValid() - && isSubclassOf(metaInfo.typeName(), metaInfo.majorVersion(), metaInfo.minorVersion()); + if (!isValid()) + return false; + if (majorVersion() == -1 && minorVersion() == -1) + return isSubclassOf(metaInfo.typeName()); + return isSubclassOf(metaInfo.typeName(), metaInfo.majorVersion(), metaInfo.minorVersion()); } } @@ -1714,11 +1717,14 @@ bool NodeMetaInfo::isBasedOn(const NodeMetaInfo &metaInfo1, const NodeMetaInfo & if constexpr (useProjectStorage()) { return m_projectStorage->isBasedOn(m_typeId, metaInfo1.m_typeId, metaInfo2.m_typeId); } else { - return isValid() - && (isSubclassOf(metaInfo1.typeName(), metaInfo1.majorVersion(), metaInfo1.minorVersion()) - || isSubclassOf(metaInfo2.typeName(), - metaInfo2.majorVersion(), - metaInfo2.minorVersion())); + if (!isValid()) + return false; + if (majorVersion() == -1 && minorVersion() == -1) + return (isSubclassOf(metaInfo1.typeName()) || isSubclassOf(metaInfo2.typeName())); + + return ( + isSubclassOf(metaInfo1.typeName(), metaInfo1.majorVersion(), metaInfo1.minorVersion()) + || isSubclassOf(metaInfo2.typeName(), metaInfo2.majorVersion(), metaInfo2.minorVersion())); } } @@ -1732,14 +1738,16 @@ bool NodeMetaInfo::isBasedOn(const NodeMetaInfo &metaInfo1, metaInfo2.m_typeId, metaInfo3.m_typeId); } else { - return isValid() - && (isSubclassOf(metaInfo1.typeName(), metaInfo1.majorVersion(), metaInfo1.minorVersion()) - || isSubclassOf(metaInfo2.typeName(), - metaInfo2.majorVersion(), - metaInfo2.minorVersion()) - || isSubclassOf(metaInfo3.typeName(), - metaInfo3.majorVersion(), - metaInfo3.minorVersion())); + if (!isValid()) + return false; + if (majorVersion() == -1 && minorVersion() == -1) + return (isSubclassOf(metaInfo1.typeName()) || isSubclassOf(metaInfo2.typeName()) + || isSubclassOf(metaInfo3.typeName())); + + return ( + isSubclassOf(metaInfo1.typeName(), metaInfo1.majorVersion(), metaInfo1.minorVersion()) + || isSubclassOf(metaInfo2.typeName(), metaInfo2.majorVersion(), metaInfo2.minorVersion()) + || isSubclassOf(metaInfo3.typeName(), metaInfo3.majorVersion(), metaInfo3.minorVersion())); } }