diff --git a/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp b/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp index acaf8c3f3130089855bb581e95f7ab102ffec11d..8a3e1450583bd01c305c04299111888d0c9359de 100644 --- a/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp +++ b/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp @@ -339,7 +339,7 @@ public: Model *model() const { return m_model; } - QString packageName() const; + QString cppPackageName() const; QString componentSource() const; QString componentFileName() const; @@ -674,6 +674,14 @@ QString NodeMetaInfoPrivate::propertyEnumScope(const QString &propertyName) cons return QString(); } +static QString getUnqualifiedName(const QString &name) +{ + const QStringList nameComponents = name.split('.'); + if (nameComponents.size() < 2) + return QString(); + return nameComponents.last(); +} + bool NodeMetaInfoPrivate::cleverCheckType(const QString &otherType) const { if (otherType == qualfiedTypeName()) @@ -689,8 +697,8 @@ bool NodeMetaInfoPrivate::cleverCheckType(const QString &otherType) const package = split.first(); typeName = split.at(1); } - if (packageName() == package) - return QString(package + '.' + typeName) == qualfiedTypeName(); + if (cppPackageName() == package) + return QString(package + '.' + typeName) == cppPackageName() + '.' + getUnqualifiedName(qualfiedTypeName()); const CppComponentValue *qmlObjectValue = getCppComponentValue(); if (!qmlObjectValue) @@ -753,7 +761,7 @@ QStringList NodeMetaInfoPrivate::keysForEnum(const QString &enumName) const return qmlObjectValue->getEnum(enumName).keys(); } -QString NodeMetaInfoPrivate::packageName() const +QString NodeMetaInfoPrivate::cppPackageName() const { if (!isComponent()) { if (const CppComponentValue *qmlObject = getCppComponentValue()) diff --git a/src/plugins/qmldesigner/designercore/model/qmlchangeset.cpp b/src/plugins/qmldesigner/designercore/model/qmlchangeset.cpp index 7c9bfa52f98a5293eb82a06a2dfb403f5f4ee405..c4a814fa82827fdd0cb2b9dd5950ebade26a789e 100644 --- a/src/plugins/qmldesigner/designercore/model/qmlchangeset.cpp +++ b/src/plugins/qmldesigner/designercore/model/qmlchangeset.cpp @@ -57,7 +57,7 @@ bool QmlPropertyChanges::isValid() const bool QmlModelStateOperation::isValid() const { - return QmlModelNodeFacade::isValid() && modelNode().metaInfo().isSubclassOf("<cpp>.QDeclarativeStateOperation", -1, -1); + return QmlModelNodeFacade::isValid() && modelNode().metaInfo().isSubclassOf("<cpp>.QDeclarative1StateOperation", -1, -1); } void QmlPropertyChanges::removeProperty(const QString &name) diff --git a/tests/auto/qml/qmldesigner/coretests/tst_testcore.cpp b/tests/auto/qml/qmldesigner/coretests/tst_testcore.cpp index 64a9f4edbdddafa53516f2e7f1ac4520b4e83216..ecc8b394ab280f846724c46297afd887a9487854 100644 --- a/tests/auto/qml/qmldesigner/coretests/tst_testcore.cpp +++ b/tests/auto/qml/qmldesigner/coretests/tst_testcore.cpp @@ -1259,6 +1259,7 @@ void tst_TestCore::testBasicStates() QCOMPARE(state1.propertyChanges().count(), 2); QCOMPARE(state2.propertyChanges().count(), 2); + QVERIFY(state1.propertyChanges().first().modelNode().metaInfo().isSubclassOf("<cpp>.QDeclarative1StateOperation", -1, -1)); QVERIFY(!state1.hasPropertyChanges(rootModelNode)); QVERIFY(state1.propertyChanges(rect1).isValid());