summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorThomas Hartmann <thomas.hartmann@qt.io>2021-08-23 16:07:37 +0200
committerThomas Hartmann <thomas.hartmann@qt.io>2021-08-24 08:55:04 +0000
commit8c8519853ce9b50d8e30c98a32df4ed90d77cba1 (patch)
tree0aae5fcb1f2f42294039c4acb53e938666118af7 /src
parentc0c3920a11bee79414e06c1f41b2e6fe4d6fd3a7 (diff)
downloadqt-creator-8c8519853ce9b50d8e30c98a32df4ed90d77cba1.tar.gz
QmlDesigner: Do not set literals as bindings
Literals like 'true' or '1' are no bindings and should be set as variant properties. This requires special handling for QVariant. Task-number: QDS-4684 Change-Id: Ib831fb78e76fbd7563fe3897b8a2c5379ee9a9db Reviewed-by: Tony Leinonen <tony.leinonen@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/plugins/qmldesigner/components/propertyeditor/propertyeditorview.cpp24
1 files changed, 21 insertions, 3 deletions
diff --git a/src/plugins/qmldesigner/components/propertyeditor/propertyeditorview.cpp b/src/plugins/qmldesigner/components/propertyeditor/propertyeditorview.cpp
index abdfc2ebd4..8feef84877 100644
--- a/src/plugins/qmldesigner/components/propertyeditor/propertyeditorview.cpp
+++ b/src/plugins/qmldesigner/components/propertyeditor/propertyeditorview.cpp
@@ -235,6 +235,12 @@ void PropertyEditorView::changeValue(const QString &name)
}
}
+static bool isTrueFalseLiteral(const QString &expression)
+{
+ return (expression.compare("false", Qt::CaseInsensitive) == 0)
+ || (expression.compare("true", Qt::CaseInsensitive) == 0);
+}
+
void PropertyEditorView::changeExpression(const QString &propertyName)
{
PropertyName name = propertyName.toUtf8();
@@ -267,9 +273,8 @@ void PropertyEditorView::changeExpression(const QString &propertyName)
return;
}
} else if (qmlObjectNode->modelNode().metaInfo().propertyTypeName(name) == "bool") {
- if (value->expression().compare(QLatin1String("false"), Qt::CaseInsensitive) == 0
- || value->expression().compare(QLatin1String("true"), Qt::CaseInsensitive) == 0) {
- if (value->expression().compare(QLatin1String("true"), Qt::CaseInsensitive) == 0)
+ if (isTrueFalseLiteral(value->expression())) {
+ if (value->expression().compare("true", Qt::CaseInsensitive) == 0)
qmlObjectNode->setVariantProperty(name, true);
else
qmlObjectNode->setVariantProperty(name, false);
@@ -289,6 +294,19 @@ void PropertyEditorView::changeExpression(const QString &propertyName)
qmlObjectNode->setVariantProperty(name, realValue);
return;
}
+ } else if (qmlObjectNode->modelNode().metaInfo().propertyTypeName(name) == "QVariant") {
+ bool ok;
+ qreal realValue = value->expression().toDouble(&ok);
+ if (ok) {
+ qmlObjectNode->setVariantProperty(name, realValue);
+ return;
+ } else if (isTrueFalseLiteral(value->expression())) {
+ if (value->expression().compare("true", Qt::CaseInsensitive) == 0)
+ qmlObjectNode->setVariantProperty(name, true);
+ else
+ qmlObjectNode->setVariantProperty(name, false);
+ return;
+ }
}
}