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