From a0faeb73f1a398a62bbf1a1937f4c682a218de35 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann <Thomas.Hartmann@nokia.com> Date: Tue, 2 Mar 2010 17:49:58 +0100 Subject: [PATCH] QmlDesigner.propertyEditor: fix crash "#000000" and "true" is not really an expression and is handled as value now - this keeps consistency with rewriting and the QmlDom --- .../components/propertyeditor/propertyeditor.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/plugins/qmldesigner/components/propertyeditor/propertyeditor.cpp b/src/plugins/qmldesigner/components/propertyeditor/propertyeditor.cpp index 16f6a568d7d..20051e13e9b 100644 --- a/src/plugins/qmldesigner/components/propertyeditor/propertyeditor.cpp +++ b/src/plugins/qmldesigner/components/propertyeditor/propertyeditor.cpp @@ -387,6 +387,22 @@ void PropertyEditor::changeExpression(const QString &name) QmlObjectNode fxObjectNode(m_selectedNode); PropertyEditorValue *value = qobject_cast<PropertyEditorValue*>(QDeclarativeMetaType::toQObject(m_currentType->m_backendValuesPropertyMap.value(underscoreName))); + if (fxObjectNode.modelNode().metaInfo().isValid() && fxObjectNode.modelNode().metaInfo().property(name).isValid()) + if (fxObjectNode.modelNode().metaInfo().property(name).type() == QLatin1String("QColor")) { + if (QColor(value->expression().remove('"')).isValid()) { + fxObjectNode.setVariantProperty(name, QColor(value->expression().remove('"'))); + return; + } + } else if (fxObjectNode.modelNode().metaInfo().property(name).type() == QLatin1String("bool")) { + if (value->expression().compare("false", Qt::CaseInsensitive) == 0 || value->expression().compare("true", Qt::CaseInsensitive) == 0) { + if (value->expression().compare("true", Qt::CaseInsensitive) == 0) + fxObjectNode.setVariantProperty(name, true); + else + fxObjectNode.setVariantProperty(name, false); + return; + } + } + if (!value) { qWarning() << "PropertyEditor::changeExpression no value for " << underscoreName; return; -- GitLab