From 5b3937ce27d04ce240662521321dfdc3e1a8373b Mon Sep 17 00:00:00 2001 From: Aaron Kennedy Date: Thu, 20 May 2010 14:23:07 +1000 Subject: Ensure valuetype enums can be assigned from JS QTBUG-10830 --- src/declarative/qml/qdeclarativevaluetypescriptclass.cpp | 2 ++ .../qdeclarativevaluetypes/tst_qdeclarativevaluetypes.cpp | 8 ++++++++ 2 files changed, 10 insertions(+) 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(component.create()); + QVERIFY(object != 0); + QVERIFY(object->font().capitalization() == QFont::AllUppercase); + delete object; + } } // Tests switching between "conflicting" bindings (eg. a binding on the core -- cgit v0.12