diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2021-06-08 10:16:30 +0200 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2021-06-08 10:36:13 +0200 |
commit | bdee2a862f9d9acc38b9a58b85a86fca0d2b38c2 (patch) | |
tree | fa86f96bb7e22b016d647fffe59ff9a715c1c483 /tests/auto/qml/qmltyperegistrar/tst_qmltyperegistrar.h | |
parent | 2bedff619c3775081bc5c8dfafa50fd7e11d8cb1 (diff) |
qmltyperegistrar: Do not generate namespace metatypes for non-namespaces
If the target type of a QML_FOREIGN_NAMESPACE is not a namespace, we
must not generate another metatype for it because otherwise we get two
metatypes with the same name and ID.
Change-Id: I0111e995a227c4a5d4c99e47662b7f86767e0da1
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'tests/auto/qml/qmltyperegistrar/tst_qmltyperegistrar.h')
-rw-r--r-- | tests/auto/qml/qmltyperegistrar/tst_qmltyperegistrar.h | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/tests/auto/qml/qmltyperegistrar/tst_qmltyperegistrar.h b/tests/auto/qml/qmltyperegistrar/tst_qmltyperegistrar.h index 5b03c2a0d3..2a8423c682 100644 --- a/tests/auto/qml/qmltyperegistrar/tst_qmltyperegistrar.h +++ b/tests/auto/qml/qmltyperegistrar/tst_qmltyperegistrar.h @@ -305,6 +305,83 @@ private: QProperty<QObject *> m_parent; }; + +class ValueTypeWithEnum1 +{ + Q_GADGET + Q_PROPERTY(ValueTypeWithEnum1::Quality quality READ quality WRITE setQuality) +public: + enum Quality + { + VeryLowQuality, + LowQuality, + NormalQuality, + HighQuality, + VeryHighQuality + }; + Q_ENUM(Quality) + + Quality quality() const { return m_quality; } + void setQuality(Quality quality) { m_quality = quality; } + +private: + Quality m_quality = HighQuality; +}; + +// value type alphabetically first +struct AValueTypeWithEnumForeign1 +{ + Q_GADGET + QML_FOREIGN(ValueTypeWithEnum1) + QML_NAMED_ELEMENT(valueTypeWithEnum1) +}; + +// namespace alphabetically second +namespace BValueTypeWithEnumForeignNamespace1 +{ + Q_NAMESPACE + QML_FOREIGN_NAMESPACE(ValueTypeWithEnum1) + QML_NAMED_ELEMENT(ValueTypeWithEnum1) +}; + +class ValueTypeWithEnum2 +{ + Q_GADGET + Q_PROPERTY(ValueTypeWithEnum2::Quality quality READ quality WRITE setQuality) +public: + enum Quality + { + VeryLowQuality, + LowQuality, + NormalQuality, + HighQuality, + VeryHighQuality + }; + Q_ENUM(Quality) + + Quality quality() const { return m_quality; } + void setQuality(Quality quality) { m_quality = quality; } + +private: + Quality m_quality = HighQuality; +}; + +// namespace alphabetically first +namespace AValueTypeWithEnumForeignNamespace2 +{ + Q_NAMESPACE + QML_FOREIGN_NAMESPACE(ValueTypeWithEnum2) + QML_NAMED_ELEMENT(ValueTypeWithEnum2) +}; + +// value type alphabetically second +struct BValueTypeWithEnumForeign2 +{ + Q_GADGET + QML_FOREIGN(ValueTypeWithEnum2) + QML_NAMED_ELEMENT(valueTypeWithEnum2) +}; + class tst_qmltyperegistrar : public QObject { Q_OBJECT @@ -333,6 +410,7 @@ private slots: void hiddenAccessor(); void finalProperty(); void parentProperty(); + void namespacesAndValueTypes(); private: QByteArray qmltypesData; |