Fixed dynamic property default values.

This commit is contained in:
Erik Verbruggen
2010-03-29 13:00:56 +02:00
parent 4ee8a199af
commit e934ae4a73
2 changed files with 19 additions and 8 deletions

View File

@@ -179,6 +179,8 @@ static inline int propertyType(const QString &typeName)
return QMetaType::type("int");
else if (typeName == QLatin1String("real"))
return QMetaType::type("double");
else if (typeName == QLatin1String("double"))
return QMetaType::type("double");
else if (typeName == QLatin1String("string"))
return QMetaType::type("QString");
else if (typeName == QLatin1String("url"))
@@ -650,9 +652,16 @@ QVariant TextToModelMerger::convertToVariant(const ModelNode &node,
if (!astType.isEmpty()) {
const int type = propertyType(astType);
QVariant value(cleanedValue);
value.convert(static_cast<QVariant::Type>(type));
return value;
if (type == QMetaType::type("QVariant")) {
if (cleanedValue.isNull()) // Explicitly isNull, NOT isEmpty!
return QVariant(static_cast<QVariant::Type>(type));
else
return QVariant(cleanedValue);
} else {
QVariant value = QVariant(cleanedValue);
value.convert(static_cast<QVariant::Type>(type));
return value;
}
const QString typeName = QMetaType::typeName(type);
return Internal::PropertyParser::read(typeName, astValue, nodeMetaInfo.metaInfo());