diff options
author | Volker Hilsheimer <volker.hilsheimer@qt.io> | 2020-07-15 14:17:35 +0200 |
---|---|---|
committer | Volker Hilsheimer <volker.hilsheimer@qt.io> | 2020-07-15 16:16:53 +0200 |
commit | 124590850b7017233e25366688715ef642c5cdc3 (patch) | |
tree | 0d8e3b2f0a32ad65c415bb70c0c83e7bb7cb5482 /src/corelib/kernel/qpropertyprivate.h | |
parent | 5f3f23462e7990800b7d93daecd4ab8e895ef036 (diff) |
Don't test for equality if types can't be compared
For types that don't have an operator==(), always trigger the binding
and the changed notification.
Task-number: QTBUG-85578
Change-Id: I41374f6d13c88106f4de83864e82172f3a248150
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'src/corelib/kernel/qpropertyprivate.h')
-rw-r--r-- | src/corelib/kernel/qpropertyprivate.h | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/corelib/kernel/qpropertyprivate.h b/src/corelib/kernel/qpropertyprivate.h index ad5ed59e88..dde6bb8d01 100644 --- a/src/corelib/kernel/qpropertyprivate.h +++ b/src/corelib/kernel/qpropertyprivate.h @@ -139,15 +139,19 @@ public: T getValue() const { return value; } bool setValueAndReturnTrueIfChanged(T &&v) { - if (v == value) - return false; + if constexpr (QTypeTraits::has_operator_equal_v<T>) { + if (v == value) + return false; + } value = std::move(v); return true; } bool setValueAndReturnTrueIfChanged(const T &v) { - if (v == value) - return false; + if constexpr (QTypeTraits::has_operator_equal_v<T>) { + if (v == value) + return false; + } value = v; return true; } |