tools/qdoc3/cppcodemarker.cpp
changeset 37 758a864f9613
parent 33 3e2da88830cd
--- a/tools/qdoc3/cppcodemarker.cpp	Fri Sep 17 08:34:18 2010 +0300
+++ b/tools/qdoc3/cppcodemarker.cpp	Mon Oct 04 01:19:32 2010 +0300
@@ -1127,7 +1127,8 @@
   Currently, it only handles QML property groups.
  */
 QList<Section> CppCodeMarker::qmlSections(const QmlClassNode* qmlClassNode,
-                                          SynopsisStyle style)
+                                          SynopsisStyle style,
+                                          const Tree* tree)
 {
     QList<Section> sections;
     if (qmlClassNode) {
@@ -1244,6 +1245,48 @@
 	    append(sections,qmlmethods);
 	    append(sections,qmlattachedmethods);
         }
+        else {
+	    FastSection all(qmlClassNode,"","","member","members");
+
+	    QStack<const QmlClassNode*> stack;
+	    stack.push(qmlClassNode);
+
+	    while (!stack.isEmpty()) {
+	        const QmlClassNode* ancestorClass = stack.pop();
+
+	        NodeList::ConstIterator c = ancestorClass->childNodes().begin();
+	        while (c != ancestorClass->childNodes().end()) {
+                    //		    if ((*c)->access() != Node::Private)
+                    if ((*c)->subType() == Node::QmlPropertyGroup) {
+                        const QmlPropGroupNode* qpgn = static_cast<const QmlPropGroupNode*>(*c);
+                        NodeList::ConstIterator p = qpgn->childNodes().begin();
+                        while (p != qpgn->childNodes().end()) {
+                            if ((*p)->type() == Node::QmlProperty) {
+                                insert(all,*p,style,Okay);
+                            }
+                            ++p;
+                        }
+                    }
+                    else
+                        insert(all,*c,style,Okay);
+                    ++c;
+                }
+
+                if (!ancestorClass->links().empty()) {
+                    if (ancestorClass->links().contains(Node::InheritsLink)) {
+                        QPair<QString,QString> linkPair;
+                        linkPair = ancestorClass->links()[Node::InheritsLink];
+                        QStringList strList(linkPair.first);
+                        const Node* n = tree->findNode(strList,Node::Fake);
+                        if (n && n->subType() == Node::QmlClass) {
+                            const QmlClassNode* qcn = static_cast<const QmlClassNode*>(n);
+                            stack.prepend(qcn);
+                        }
+                    }
+                }
+	    }
+	    append(sections, all);
+        }
     }
 
     return sections;