diff options
-rw-r--r-- | src/declarative/qml/qdeclarativevaluetypescriptclass.cpp | 2 | ||||
-rw-r--r-- | tests/auto/declarative/qdeclarativevaluetypes/tst_qdeclarativevaluetypes.cpp | 8 |
2 files changed, 10 insertions, 0 deletions
diff --git a/src/declarative/qml/qdeclarativevaluetypescriptclass.cpp b/src/declarative/qml/qdeclarativevaluetypescriptclass.cpp index cb1f27d..f06d6ae 100644 --- a/src/declarative/qml/qdeclarativevaluetypescriptclass.cpp +++ b/src/declarative/qml/qdeclarativevaluetypescriptclass.cpp @@ -168,6 +168,8 @@ void QDeclarativeValueTypeScriptClass::setProperty(Object *obj, const Identifier ref->type->read(ref->object, ref->property); QMetaProperty p = ref->type->metaObject()->property(m_lastIndex); + if (p.isEnumType() && (QMetaType::Type)v.type() == QMetaType::QReal) + v = v.toInt(); p.write(ref->type, v); ref->type->write(ref->object, ref->property, 0); } else { diff --git a/tests/auto/declarative/qdeclarativevaluetypes/tst_qdeclarativevaluetypes.cpp b/tests/auto/declarative/qdeclarativevaluetypes/tst_qdeclarativevaluetypes.cpp index 95b9baa..53fd68c 100644 --- a/tests/auto/declarative/qdeclarativevaluetypes/tst_qdeclarativevaluetypes.cpp +++ b/tests/auto/declarative/qdeclarativevaluetypes/tst_qdeclarativevaluetypes.cpp @@ -838,6 +838,14 @@ void tst_qdeclarativevaluetypes::enums() QVERIFY(object->font().capitalization() == QFont::AllUppercase); delete object; } + + { + QDeclarativeComponent component(&engine, TEST_FILE("enums.5.qml")); + MyTypeObject *object = qobject_cast<MyTypeObject *>(component.create()); + QVERIFY(object != 0); + QVERIFY(object->font().capitalization() == QFont::AllUppercase); + delete object; + } } // Tests switching between "conflicting" bindings (eg. a binding on the core |