qmlplugindump: Fix dumping of extended QGraphicsWidget.
authorChristian Kamm <christian.d.kamm@nokia.com>
Thu, 8 Dec 2011 13:15:58 +0000 (14:15 +0100)
committerQt by Nokia <qt-info@nokia.com>
Thu, 8 Dec 2011 13:22:57 +0000 (14:22 +0100)
Change-Id: Id574b4ee98f7d985ef06619956b2c02cac68b553
Reviewed-by: Roberto Raggi <roberto.raggi@nokia.com>
tools/qmlplugindump/main.cpp

index c9f6cbe..79c6fce 100644 (file)
@@ -76,14 +76,15 @@ bool verbose = false;
 QString currentProperty;
 QString inObjectInstantiation;
 
-void collectReachableMetaObjects(const QMetaObject *meta, QSet<const QMetaObject *> *metas)
+void collectReachableMetaObjects(const QMetaObject *meta, QSet<const QMetaObject *> *metas, bool extended = false)
 {
     if (! meta || metas->contains(meta))
         return;
 
-    // dynamic meta objects break things badly, so just ignore them
+    // dynamic meta objects can break things badly (like QDeclarative1VisualDataModelParts)
+    // but extended types are usually fine (like QDeclarative1GraphicsWidget)
     const QMetaObjectPrivate *mop = reinterpret_cast<const QMetaObjectPrivate *>(meta->d.data);
-    if (!(mop->flags & DynamicMetaObject))
+    if (extended || !(mop->flags & DynamicMetaObject))
         metas->insert(meta);
 
     collectReachableMetaObjects(meta->superClass(), metas);
@@ -118,7 +119,7 @@ void collectReachableMetaObjects(QObject *object, QSet<const QMetaObject *> *met
 
 void collectReachableMetaObjects(const QDeclarativeType *ty, QSet<const QMetaObject *> *metas)
 {
-    collectReachableMetaObjects(ty->metaObject(), metas);
+    collectReachableMetaObjects(ty->metaObject(), metas, ty->isExtendedType());
     if (ty->attachedPropertiesType())
         collectReachableMetaObjects(ty->attachedPropertiesType(), metas);
 }