diff --git a/src/tools/qdoc/ditaxmlgenerator.cpp b/src/tools/qdoc/ditaxmlgenerator.cpp index 1f986e35ff..f49b267d2a 100644 --- a/src/tools/qdoc/ditaxmlgenerator.cpp +++ b/src/tools/qdoc/ditaxmlgenerator.cpp @@ -6048,23 +6048,32 @@ void DitaXmlGenerator::writeTopicrefs(NodeMultiMap* nmm, const QString& navtitle xmlWriter().writeAttribute("navtitle",i.key()); xmlWriter().writeAttribute("href",fileName(i.value())); switch (i.value()->type()) { - case Node::Class: { - const NamespaceNode* nn = static_cast(i.value()); - const NodeList& c = nn->childNodes(); - for (int j=0; jisInternal() || c[j]->access() == Node::Private || c[j]->doc().isEmpty()) - continue; - if (c[j]->type() == Node::Class) { - writeStartTag(DT_topicref); - xmlWriter().writeAttribute("navtitle",c[j]->name()); - xmlWriter().writeAttribute("href",fileName(c[j])); - writeEndTag(); // + case Node::Class: + case Node::Namespace: { + const NamespaceNode* nn = static_cast(i.value()); + const NodeList& c = nn->childNodes(); + QMap tempMap; + for (int j=0; jisInternal() || c[j]->access() == Node::Private || c[j]->doc().isEmpty()) + continue; + if (c[j]->type() == Node::Class) { + tempMap.insert(c[j]->name(), c[j]); + } } + QMap::iterator classIterator = tempMap.begin(); + while (classIterator != tempMap.end()) { + const Node* currentNode = static_cast(classIterator.value()); + writeStartTag(DT_topicref); + xmlWriter().writeAttribute("navtitle",currentNode->name()); + xmlWriter().writeAttribute("href",fileName(currentNode)); + writeEndTag(); // + ++classIterator; + } + + break; } - break; - } - default: - break; + default: + break; } writeEndTag(); // ++i;