forked from qt-creator/qt-creator
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
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user