summaryrefslogtreecommitdiffstats
path: root/src/corelib/kernel/qpropertyprivate.h
diff options
context:
space:
mode:
authorVolker Hilsheimer <volker.hilsheimer@qt.io>2020-07-15 14:17:35 +0200
committerVolker Hilsheimer <volker.hilsheimer@qt.io>2020-07-15 16:16:53 +0200
commit124590850b7017233e25366688715ef642c5cdc3 (patch)
tree0d8e3b2f0a32ad65c415bb70c0c83e7bb7cb5482 /src/corelib/kernel/qpropertyprivate.h
parent5f3f23462e7990800b7d93daecd4ab8e895ef036 (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.h12
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;
}