From 3867bc5a10f0b798154025265efacd2f53ace06e Mon Sep 17 00:00:00 2001 From: Tomasz Olszak Date: Wed, 8 Jan 2014 17:12:28 +0100 Subject: [PATCH] Send DynamicPropertyChange event only when value is changed. According to docs DynamicPropertyChange event should be sent from setProperty function only when property is added, removed or changed. Change-Id: I080a27a4119a63580b03172f4b5b367338c6f440 Reviewed-by: Olivier Goffart --- src/corelib/kernel/qobject.cpp | 2 ++ tests/auto/corelib/kernel/qobject/tst_qobject.cpp | 3 +++ 2 files changed, 5 insertions(+) diff --git a/src/corelib/kernel/qobject.cpp b/src/corelib/kernel/qobject.cpp index a027f82f827..ff7a79d5873 100644 --- a/src/corelib/kernel/qobject.cpp +++ b/src/corelib/kernel/qobject.cpp @@ -3809,6 +3809,8 @@ bool QObject::setProperty(const char *name, const QVariant &value) d->extraData->propertyNames.append(name); d->extraData->propertyValues.append(value); } else { + if (value == d->extraData->propertyValues.at(idx)) + return false; d->extraData->propertyValues[idx] = value; } } diff --git a/tests/auto/corelib/kernel/qobject/tst_qobject.cpp b/tests/auto/corelib/kernel/qobject/tst_qobject.cpp index a5b5b659ea2..8875998433a 100644 --- a/tests/auto/corelib/kernel/qobject/tst_qobject.cpp +++ b/tests/auto/corelib/kernel/qobject/tst_qobject.cpp @@ -2950,6 +2950,9 @@ void tst_QObject::dynamicProperties() QVERIFY(!obj.setProperty("myuserproperty", "Hello")); QCOMPARE(obj.changedDynamicProperties.count(), 1); QCOMPARE(obj.changedDynamicProperties.first(), QByteArray("myuserproperty")); + //check if there is no redundant DynamicPropertyChange events + QVERIFY(!obj.setProperty("myuserproperty", "Hello")); + QCOMPARE(obj.changedDynamicProperties.count(), 1); obj.changedDynamicProperties.clear(); QCOMPARE(obj.property("myuserproperty").toString(), QString("Hello"));