diff --git a/src/plugins/qmldesigner/components/propertyeditor/propertyeditor.cpp b/src/plugins/qmldesigner/components/propertyeditor/propertyeditor.cpp index 16f6a568d7d1a603fe4cefd5c305ab9d239438ae..20051e13e9b1c819118593919321972643430f0d 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;