diff options
author | Thiago Macieira <thiago.macieira@intel.com> | 2022-02-15 08:36:45 -0800 |
---|---|---|
committer | Thiago Macieira <thiago.macieira@intel.com> | 2022-02-16 01:47:09 -0800 |
commit | 8de049389610037595e3b24ed660d4855aa460ce (patch) | |
tree | 73c5dc1111fd57f7c87fa5e0ba8a720d1c134885 | |
parent | d34282dba0ebe67c16c1ee6e25d85f019b48b615 (diff) |
QMetaObjectBuilder: fix addProperty() recording of the property type
Issue introduced by commit 465701bb98f3c3454d15c22b8e38ab4ad8821dfc.
[ChangeLog][QtCore][QMetaObjectBuilder] Fixed a bug that would cause
addProperty() to use the incorrect type for the property if the
property's name matched a valid type registered with QMetaType.
Pick-to: 6.2 6.3
Change-Id: Ic15405335d804bdea761fffd16d402f2c9611f30
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
-rw-r--r-- | src/corelib/kernel/qmetaobjectbuilder.cpp | 2 | ||||
-rw-r--r-- | tests/auto/corelib/kernel/qmetaobjectbuilder/tst_qmetaobjectbuilder.cpp | 6 |
2 files changed, 5 insertions, 3 deletions
diff --git a/src/corelib/kernel/qmetaobjectbuilder.cpp b/src/corelib/kernel/qmetaobjectbuilder.cpp index 1a95d7265f..4f762b5e96 100644 --- a/src/corelib/kernel/qmetaobjectbuilder.cpp +++ b/src/corelib/kernel/qmetaobjectbuilder.cpp @@ -558,7 +558,7 @@ QMetaMethodBuilder QMetaObjectBuilder::addConstructor(const QMetaMethod &prototy QMetaPropertyBuilder QMetaObjectBuilder::addProperty(const QByteArray &name, const QByteArray &type, int notifierId) { - return addProperty(name, type, QMetaType::fromName(name), notifierId); + return addProperty(name, type, QMetaType::fromName(type), notifierId); } /*! diff --git a/tests/auto/corelib/kernel/qmetaobjectbuilder/tst_qmetaobjectbuilder.cpp b/tests/auto/corelib/kernel/qmetaobjectbuilder/tst_qmetaobjectbuilder.cpp index d8b7a96f4c..188a5a6626 100644 --- a/tests/auto/corelib/kernel/qmetaobjectbuilder/tst_qmetaobjectbuilder.cpp +++ b/tests/auto/corelib/kernel/qmetaobjectbuilder/tst_qmetaobjectbuilder.cpp @@ -1638,17 +1638,19 @@ void tst_QMetaObjectBuilder::classNameFirstInStringData() } struct MyFoo {}; +struct myParameter {}; void tst_QMetaObjectBuilder::propertyMetaType() { + qRegisterMetaType<myParameter>(); QMetaType meta = QMetaType::fromType<MyFoo>(); auto metaId = meta.id(); QMetaObjectBuilder builder; builder.setClassName("Test"); - builder.addProperty("test", "MyFoo"); + builder.addProperty("myParameter", "MyFoo"); auto mo = builder.toMetaObject(); - QMetaProperty metaProp = mo->property(mo->indexOfProperty("test")); + QMetaProperty metaProp = mo->property(mo->indexOfProperty("myParameter")); QCOMPARE(metaProp.typeName(), meta.name()); QCOMPARE(metaProp.typeId(), metaId); QCOMPARE(metaProp.metaType(), meta); |