aboutsummaryrefslogtreecommitdiffstats
path: root/src/declarative/qml/qdeclarativemetatype.cpp
diff options
context:
space:
mode:
authorAaron Kennedy <aaron.kennedy@nokia.com>2011-12-07 14:20:01 +0000
committerQt by Nokia <qt-info@nokia.com>2011-12-07 15:22:37 +0100
commit1c3a4e6f824289cd82aa1c4b0039b2e80c122d96 (patch)
tree09e23ea6bb14c152eef1a9d80fafa327b6dbe290 /src/declarative/qml/qdeclarativemetatype.cpp
parent01cb691e8a619fcb4c6e1e67980ae10fe04b364e (diff)
Fix QObject V8 wrapping for extended types
The meta object for extended types must be marked as dynamic, to prevent their properties from being marked as IsDirect. Task-number: QTBUG-22997 Change-Id: I825f94f072cb46981706221a1044c9e2feeedcc2 Reviewed-by: Simon Hausmann <simon.hausmann@nokia.com> Reviewed-by: Aaron Kennedy <aaron.kennedy@nokia.com>
Diffstat (limited to 'src/declarative/qml/qdeclarativemetatype.cpp')
-rw-r--r--src/declarative/qml/qdeclarativemetatype.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/declarative/qml/qdeclarativemetatype.cpp b/src/declarative/qml/qdeclarativemetatype.cpp
index c175d725b8..ac89eb9a2e 100644
--- a/src/declarative/qml/qdeclarativemetatype.cpp
+++ b/src/declarative/qml/qdeclarativemetatype.cpp
@@ -429,8 +429,10 @@ void QDeclarativeTypePrivate::init() const
// XXX - very inefficient
const QMetaObject *mo = m_baseMetaObject;
if (m_extFunc) {
- QMetaObject *mmo = new QMetaObject;
- *mmo = *m_extMetaObject;
+ QMetaObjectBuilder builder;
+ clone(builder, m_extMetaObject, m_extMetaObject, m_extMetaObject);
+ builder.setFlags(QMetaObjectBuilder::DynamicMetaObject);
+ QMetaObject *mmo = builder.toMetaObject();
mmo->d.superdata = mo;
QDeclarativeProxyMetaObject::ProxyData data = { mmo, m_extFunc, 0, 0 };
m_metaObjects << data;
@@ -443,6 +445,7 @@ void QDeclarativeTypePrivate::init() const
if (t->d->m_extFunc) {
QMetaObjectBuilder builder;
clone(builder, t->d->m_extMetaObject, t->d->m_baseMetaObject, m_baseMetaObject);
+ builder.setFlags(QMetaObjectBuilder::DynamicMetaObject);
QMetaObject *mmo = builder.toMetaObject();
mmo->d.superdata = m_baseMetaObject;
if (!m_metaObjects.isEmpty())