aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/util/qquickstategroup.cpp
diff options
context:
space:
mode:
authorTarja Sundqvist <[email protected]>2024-11-08 15:36:12 +0200
committerTarja Sundqvist <[email protected]>2024-11-08 15:36:12 +0200
commitabe4729ea8db32124c36dc33fc32eb629df03043 (patch)
tree6c02a1174b4abbcec9a127758b2c406975661312 /src/quick/util/qquickstategroup.cpp
parent7c32569ad27b743b6cb50e2bcb67c9ca1674f238 (diff)
parent7550f26e156b3bca5f4b6a9711352c2aa0ba8463 (diff)
Merge tag 'v5.15.16-lts' into tqtc/lts-5.15-opensourcev5.15.16-lts-lgpl
Qt 5.15.16-lts release Change-Id: I2892ad4097deaec565b10357ca61be10048a7c81
Diffstat (limited to 'src/quick/util/qquickstategroup.cpp')
-rw-r--r--src/quick/util/qquickstategroup.cpp12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/quick/util/qquickstategroup.cpp b/src/quick/util/qquickstategroup.cpp
index 7cb3138618..e0356a0173 100644
--- a/src/quick/util/qquickstategroup.cpp
+++ b/src/quick/util/qquickstategroup.cpp
@@ -381,8 +381,16 @@ bool QQuickStateGroupPrivate::updateAutoState()
const auto potentialWhenBinding = QQmlPropertyPrivate::binding(whenProp);
// if there is a binding, the value in when might not be up-to-date at this point
// so we manually reevaluate the binding
- if (auto abstractBinding = dynamic_cast<QQmlBinding *>(potentialWhenBinding))
- whenValue = abstractBinding->evaluate().toBool();
+ if (auto binding = dynamic_cast<QQmlBinding *>(potentialWhenBinding)) {
+ if (binding->context() && binding->context()->isValid()) {
+ QVariant evalResult = binding->evaluate();
+ if (evalResult.userType() == qMetaTypeId<QJSValue>())
+ whenValue = evalResult.value<QJSValue>().toBool();
+ else
+ whenValue = evalResult.toBool();
+ }
+ }
+
if (whenValue) {
if (stateChangeDebug())
qWarning() << "Setting auto state due to expression";