From fd68b868aee89f40138492468745f0e5edb3286e Mon Sep 17 00:00:00 2001 From: Chris Adams Date: Tue, 12 Jul 2011 14:05:24 +1000 Subject: Honour the resettable flag of aliased properties Previously, alias properties were not considered isResettable even if the property they alias is resettable. This commit ensures that the IsResettable flag is set for alias properties iff the aliased property is resettable, and that it is honoured during property reset operations. Task-number: QTBUG-18182 Change-Id: I9cab11923a952df72e976a48489a78b24a34314f Reviewed-on: http://codereview.qt.nokia.com/1471 Reviewed-by: Qt Sanity Bot Reviewed-by: Aaron Kennedy --- src/declarative/qml/qdeclarativecompiler.cpp | 3 +++ src/declarative/qml/qdeclarativevmemetaobject.cpp | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/declarative/qml/qdeclarativecompiler.cpp b/src/declarative/qml/qdeclarativecompiler.cpp index 5b61421bda..02c517c2e3 100644 --- a/src/declarative/qml/qdeclarativecompiler.cpp +++ b/src/declarative/qml/qdeclarativecompiler.cpp @@ -2750,6 +2750,7 @@ bool QDeclarativeCompiler::compileAlias(QMetaObjectBuilder &builder, int propIdx = -1; int flags = 0; bool writable = false; + bool resettable = false; if (alias.count() == 2 || alias.count() == 3) { propIdx = indexOfProperty(idObject, alias.at(1).toUtf8()); @@ -2764,6 +2765,7 @@ bool QDeclarativeCompiler::compileAlias(QMetaObjectBuilder &builder, COMPILE_EXCEPTION(prop.defaultValue, tr("Invalid alias location")); writable = aliasProperty.isWritable(); + resettable = aliasProperty.isResettable(); if (alias.count() == 3) { QDeclarativeValueType *valueType = enginePrivate->valueTypes[aliasProperty.type()]; @@ -2808,6 +2810,7 @@ bool QDeclarativeCompiler::compileAlias(QMetaObjectBuilder &builder, QMetaPropertyBuilder propBuilder = builder.addProperty(prop.name, typeName.constData(), builder.methodCount() - 1); propBuilder.setWritable(writable); + propBuilder.setResettable(resettable); return true; } diff --git a/src/declarative/qml/qdeclarativevmemetaobject.cpp b/src/declarative/qml/qdeclarativevmemetaobject.cpp index 746c9f650b..bcd46f259e 100644 --- a/src/declarative/qml/qdeclarativevmemetaobject.cpp +++ b/src/declarative/qml/qdeclarativevmemetaobject.cpp @@ -458,7 +458,7 @@ int QDeclarativeVMEMetaObject::metaCall(QMetaObject::Call c, int _id, void **a) } } } - if(c == QMetaObject::ReadProperty || c == QMetaObject::WriteProperty) { + if (c == QMetaObject::ReadProperty || c == QMetaObject::WriteProperty || c == QMetaObject::ResetProperty) { if (id >= propOffset) { id -= propOffset; -- cgit v1.2.3