aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/qml/qmltyperegistrar/tst_qmltyperegistrar.h
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2021-06-08 10:16:30 +0200
committerUlf Hermann <ulf.hermann@qt.io>2021-06-08 10:36:13 +0200
commitbdee2a862f9d9acc38b9a58b85a86fca0d2b38c2 (patch)
treefa86f96bb7e22b016d647fffe59ff9a715c1c483 /tests/auto/qml/qmltyperegistrar/tst_qmltyperegistrar.h
parent2bedff619c3775081bc5c8dfafa50fd7e11d8cb1 (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.h78
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;