diff options
author | Thiago Macieira <thiago.macieira@intel.com> | 2018-08-03 17:55:11 -0700 |
---|---|---|
committer | Thiago Macieira <thiago.macieira@intel.com> | 2018-08-21 04:59:13 +0000 |
commit | e0c798742adbc984e71c0f65cc432101da5b9c52 (patch) | |
tree | 9d7ec9d2fc58d0080cd9d33c79b09f8d2b321edc /src | |
parent | b5221dff520efa3bb923c4faeeeb5712f7724a87 (diff) |
QObject: do allow setProperty() to change the type of the property
[ChangeLog][QtCore][QObject] Fixed a bug in setProperty() that caused a
property change not to take effect if the old value compared equal using
QVariant's equality operator, but the values were not strictly equal.
Task-number: QTBUG-69744
Change-Id: I00e04a465fcf4fc1a462fffd1547885861a07a64
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
(cherry picked from commit 64a560d977a0a511ef541d6116d82e7b5c911a92)
Diffstat (limited to 'src')
-rw-r--r-- | src/corelib/kernel/qobject.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/corelib/kernel/qobject.cpp b/src/corelib/kernel/qobject.cpp index 57711389c4..adc85f9a3e 100644 --- a/src/corelib/kernel/qobject.cpp +++ b/src/corelib/kernel/qobject.cpp @@ -3894,7 +3894,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)) + if (value.userType() == d->extraData->propertyValues.at(idx).userType() + && value == d->extraData->propertyValues.at(idx)) return false; d->extraData->propertyValues[idx] = value; } |