diff options
| author | Thomas Hartmann <thomas.hartmann@qt.io> | 2021-08-23 16:07:37 +0200 |
|---|---|---|
| committer | Thomas Hartmann <thomas.hartmann@qt.io> | 2021-08-24 08:55:04 +0000 |
| commit | 8c8519853ce9b50d8e30c98a32df4ed90d77cba1 (patch) | |
| tree | 0aae5fcb1f2f42294039c4acb53e938666118af7 /src | |
| parent | c0c3920a11bee79414e06c1f41b2e6fe4d6fd3a7 (diff) | |
| download | qt-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.cpp | 24 |
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; + } } } |
