diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2023-08-18 12:21:27 +0200 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2023-08-21 14:15:51 +0200 |
commit | 9306db6d465a165ebe2edcbe5b0180f04d0c46ee (patch) | |
tree | 8df51114d4c98b0ab8213122a4d762d2f17a0d23 /src/corelib/kernel/qobject.cpp | |
parent | 7c9e61a3fe6da233571f24acf7ec9d9a8fc43210 (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 'src/corelib/kernel/qobject.cpp')
-rw-r--r-- | src/corelib/kernel/qobject.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/corelib/kernel/qobject.cpp b/src/corelib/kernel/qobject.cpp index 002b9bcab1..90d1f6745c 100644 --- a/src/corelib/kernel/qobject.cpp +++ b/src/corelib/kernel/qobject.cpp @@ -1321,7 +1321,7 @@ void QObject::doSetObjectName(const QString &name) d->extraData->objectName.removeBindingUnlessInWrapper(); - if (d->extraData->objectName != name) { + if (d->extraData->objectName.valueBypassingBindings() != name) { d->extraData->objectName.setValueBypassingBindings(name); d->extraData->objectName.notify(); // also emits a signal } @@ -1339,7 +1339,7 @@ void QObject::setObjectName(QAnyStringView name) d->extraData->objectName.removeBindingUnlessInWrapper(); - if (d->extraData->objectName != name) { + if (d->extraData->objectName.valueBypassingBindings() != name) { d->extraData->objectName.setValueBypassingBindings(name.toString()); d->extraData->objectName.notify(); // also emits a signal } |