diff --git a/src/tools/qdoc/node.cpp b/src/tools/qdoc/node.cpp
index e627cf859e7aa88a5a440867ca3b4e42256c8f25..2184e302aed539222dceedb1a96fbfa05b77e954 100644
--- a/src/tools/qdoc/node.cpp
+++ b/src/tools/qdoc/node.cpp
@@ -862,9 +862,12 @@ Node* InnerNode::findChildNodeByNameAndType(const QString& name, Type type)
     if (type == Function)
         return primaryFunctionMap.value(name);
     else {
-        Node *node = childMap.value(name);
-        if (node && node->type() == type)
-            return node;
+        QList<Node*> nodes = childMap.values(name);
+        for (int i=0; i<nodes.size(); ++i) {
+            Node* node = nodes.at(i);
+            if (node->type() == type)
+                return node;
+        }
     }
     return 0;
 }
diff --git a/src/tools/qdoc/qdocindexfiles.cpp b/src/tools/qdoc/qdocindexfiles.cpp
index daba2cc78a196bdb6bfefaf48e4e0ccfc6aecbf9..5f2ebdfd077bcd2c19d54681362ef8492f48af3b 100644
--- a/src/tools/qdoc/qdocindexfiles.cpp
+++ b/src/tools/qdoc/qdocindexfiles.cpp
@@ -1183,8 +1183,13 @@ void QDocIndexFiles::generateIndexSections(QXmlStreamWriter& writer,
                   It is just a place holder for a collection of QML property
                   nodes. Recurse to its children, which are the QML property
                   nodes.
+
+                  Do the same thing for collision nodes - we want children
+                  of collision nodes in the index, but leaving out the
+                  parent collision page will make searching for nodes easier.
                  */
-                if (child->subType() == Node::QmlPropertyGroup) {
+                if (child->subType() == Node::QmlPropertyGroup ||
+                        child->subType() == Node::Collision) {
                     const InnerNode* pgn = static_cast<const InnerNode*>(child);
                     foreach (Node* c, pgn->childNodes()) {
                         generateIndexSections(writer, c, generateInternalNodes);