From e3f593da8e97fd28c887d4e26d22f9417f82a13e Mon Sep 17 00:00:00 2001 From: Ulf Hermann Date: Wed, 21 Feb 2024 17:11:50 +0100 Subject: QtQml: Re-allow change signals in QQmlProperty Amends commit a1ce0596e517e84913b14ab23422137c95b8c785. Pick-to: 6.7 Task-number: QTBUG-109548 Change-Id: I476c1798bb9a125264375e6fb0829e1357d99770 Reviewed-by: Fabian Kosmale Reviewed-by: Qt CI Bot --- tests/auto/qml/qqmlproperty/tst_qqmlproperty.cpp | 29 +++++++++++++++++++----- 1 file changed, 23 insertions(+), 6 deletions(-) (limited to 'tests/auto/qml/qqmlproperty') diff --git a/tests/auto/qml/qqmlproperty/tst_qqmlproperty.cpp b/tests/auto/qml/qqmlproperty/tst_qqmlproperty.cpp index 05802a88d5..23f198bb78 100644 --- a/tests/auto/qml/qqmlproperty/tst_qqmlproperty.cpp +++ b/tests/auto/qml/qqmlproperty/tst_qqmlproperty.cpp @@ -30,8 +30,15 @@ class MyQmlObject : public QObject { Q_OBJECT Q_PROPERTY(QPoint pointProperty MEMBER m_point) + Q_PROPERTY(QString a READ objectName NOTIFY somethingHappened) + Q_PROPERTY(QString b READ objectName NOTIFY somethingHappened) public: - MyQmlObject(QObject *parent = nullptr) : QObject(parent) {} + MyQmlObject(QObject *parent = nullptr) : QObject(parent) { + connect(this, &QObject::objectNameChanged, this, &MyQmlObject::somethingHappened); + } + +signals: + void somethingHappened(); private: QPoint m_point; @@ -2424,9 +2431,13 @@ void tst_qqmlproperty::initFlags_data() const QString names[] = { QStringLiteral("foo"), + QStringLiteral("aChanged"), QStringLiteral("self.foo"), + QStringLiteral("self.aChanged"), QStringLiteral("onFoo"), + QStringLiteral("onAChanged"), QStringLiteral("self.onFoo"), + QStringLiteral("self.onAChanged"), QStringLiteral("bar"), QStringLiteral("self.bar"), QStringLiteral("abar"), @@ -2461,15 +2472,15 @@ void tst_qqmlproperty::initFlags() QQmlEngine engine; QQmlComponent c(&engine); c.setData(R"( - import QtQml - QtObject { + import Test + MyQmlObject { id: self signal foo() property int bar: 12 property alias abar: self.bar } )", QUrl()); - QVERIFY(c.isReady()); + QVERIFY2(c.isReady(), qPrintable(c.errorString())); QScopedPointer o(c.create()); QVERIFY(!o.isNull()); @@ -2479,7 +2490,9 @@ void tst_qqmlproperty::initFlags() passObject ? o.data() : nullptr, name, context, flags); const bool usesId = name.startsWith(QStringLiteral("self.")); - const bool hasSignal = name.endsWith(QStringLiteral("foo")); + const bool hasSignal = name.endsWith(QStringLiteral("foo")) + || name.endsWith(QStringLiteral("aChanged")); + if (!passObject && !usesId) { QVERIFY(!property.isValid()); } else if (passObject && usesId) { @@ -2494,10 +2507,14 @@ void tst_qqmlproperty::initFlags() QVERIFY(property.isProperty()); QCOMPARE(property.name(), usesId ? name.mid(strlen("self.")) : name); QCOMPARE(property.propertyMetaType(), QMetaType::fromType()); - } else { + } else if (name.endsWith(QStringLiteral("oo"))) { // 'onFoo' or 'foo' QVERIFY(property.isSignalProperty()); QCOMPARE(property.name(), QStringLiteral("onFoo")); QVERIFY(!property.propertyMetaType().isValid()); + } else { + QVERIFY(property.isSignalProperty()); + QCOMPARE(property.name(), QStringLiteral("onSomethingHappened")); + QVERIFY(!property.propertyMetaType().isValid()); } } -- cgit v1.2.3