summaryrefslogtreecommitdiffstats
path: root/tests/auto/corelib/kernel/qobject/tst_qobject.cpp
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2023-08-18 12:21:27 +0200
committerUlf Hermann <ulf.hermann@qt.io>2023-08-21 14:15:51 +0200
commit9306db6d465a165ebe2edcbe5b0180f04d0c46ee (patch)
tree8df51114d4c98b0ab8213122a4d762d2f17a0d23 /tests/auto/corelib/kernel/qobject/tst_qobject.cpp
parent7c9e61a3fe6da233571f24acf7ec9d9a8fc43210 (diff)
QObject: Do not register an observer when writing objectName property
Observers should only be registered when _reading_ the property. Otherwise we get binding loops. Pick-to: 6.6 6.5 Change-Id: I974f6ea444fa7a5d333ed79eea6f34e3d757d169 Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
Diffstat (limited to 'tests/auto/corelib/kernel/qobject/tst_qobject.cpp')
-rw-r--r--tests/auto/corelib/kernel/qobject/tst_qobject.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/tests/auto/corelib/kernel/qobject/tst_qobject.cpp b/tests/auto/corelib/kernel/qobject/tst_qobject.cpp
index 31345cc333..a4f761d6b9 100644
--- a/tests/auto/corelib/kernel/qobject/tst_qobject.cpp
+++ b/tests/auto/corelib/kernel/qobject/tst_qobject.cpp
@@ -8197,6 +8197,16 @@ void tst_QObject::objectNameBinding()
QObject obj;
QTestPrivate::testReadWritePropertyBasics<QObject, QString>(obj, "test1", "test2",
"objectName");
+
+ const QPropertyBinding<QString> binding([]() {
+ QObject obj2;
+ obj2.setObjectName(QLatin1String("no loop"));
+ return obj2.objectName();
+ }, {});
+ obj.bindableObjectName().setBinding(binding);
+
+ QCOMPARE(obj.objectName(), QLatin1String("no loop"));
+ QVERIFY2(!binding.error().hasError(), qPrintable(binding.error().description()));
}
namespace EmitToDestroyedClass {