summaryrefslogtreecommitdiff
path: root/src/qdoc/htmlgenerator.cpp
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@qt.io>2019-01-04 12:11:11 +0100
committerLiang Qi <liang.qi@qt.io>2019-01-04 13:03:26 +0100
commit7b23692538f55d499bf094a750311e1e4cd13ec6 (patch)
tree7e85cdabe0e069ee8fcbc3da3764327b4f8e2ba2 /src/qdoc/htmlgenerator.cpp
parentaa316d1d463777612db4b144d945bbaf67481494 (diff)
parent32897fd0b98966d22ecbd475a0e6a77ca8b1108d (diff)
downloadqttools-7b23692538f55d499bf094a750311e1e4cd13ec6.tar.gz
Merge remote-tracking branch 'origin/5.12' into dev
Conflicts: src/qdoc/htmlgenerator.cpp src/qtattributionsscanner/qdocgenerator.cpp Done-With: Martin Smith <martin.smith@qt.io> Change-Id: I56a23175579a1a699939179da2f35bbcd6c73367
Diffstat (limited to 'src/qdoc/htmlgenerator.cpp')
-rw-r--r--src/qdoc/htmlgenerator.cpp90
1 files changed, 47 insertions, 43 deletions
diff --git a/src/qdoc/htmlgenerator.cpp b/src/qdoc/htmlgenerator.cpp
index d7f9ae676..032490639 100644
--- a/src/qdoc/htmlgenerator.cpp
+++ b/src/qdoc/htmlgenerator.cpp
@@ -1431,7 +1431,6 @@ void HtmlGenerator::generateCppReferencePage(Node* node, CodeMarker* marker)
}
else {
if (!s->members().isEmpty()) {
- // out() << "<hr />\n";
QString ref = registerRef(s->title().toLower());
out() << "<a name=\"" << ref << "\"></a>" << divNavTop << "\n";
out() << "<h2 id=\"" << ref << "\">" << protectEnc(s->title()) << "</h2>\n";
@@ -1440,7 +1439,6 @@ void HtmlGenerator::generateCppReferencePage(Node* node, CodeMarker* marker)
if (!s->reimplementedMembers().isEmpty()) {
QString name = QString("Reimplemented ") + s->title();
QString ref = registerRef(name.toLower());
- // out() << "<hr />\n";
out() << "<a name=\"" << ref << "\"></a>" << divNavTop << "\n";
out() << "<h2 id=\"" << ref << "\">" << protectEnc(name) << "</h2>\n";
generateSection(s->reimplementedMembers(), aggregate, marker);
@@ -1473,7 +1471,6 @@ void HtmlGenerator::generateCppReferencePage(Node* node, CodeMarker* marker)
if (!aggregate->doc().isEmpty()) {
generateExtractionMark(aggregate, DetailedDescriptionMark);
- //out() << "<hr />\n"
out() << "<div class=\"descr\">\n" // QTBUG-9504
<< "<h2 id=\"" << detailsRef << "\">" << "Detailed Description" << "</h2>\n";
generateBody(aggregate, marker);
@@ -1485,6 +1482,7 @@ void HtmlGenerator::generateCppReferencePage(Node* node, CodeMarker* marker)
s = detailsSections->constBegin();
while (s != detailsSections->constEnd()) {
+ bool headerGenerated = false;
if (s->isEmpty()) {
++s;
continue;
@@ -1496,50 +1494,56 @@ void HtmlGenerator::generateCppReferencePage(Node* node, CodeMarker* marker)
NodeVector::ConstIterator m = s->members().constBegin();
while (m != s->members().constEnd()) {
- if ((*m)->access() != Node::Private) { // ### check necessary?
- if ((*m)->nodeType() != Node::Class)
- generateDetailedMember(*m, aggregate, marker);
- else {
- out() << "<h3> class ";
- generateFullName(*m, aggregate);
- out() << "</h3>";
- generateBrief(*m, marker, aggregate);
- }
+ if ((*m)->access() == Node::Private) { // ### check necessary?
+ ++m;
+ continue;
+ }
+ if (!headerGenerated) {
+ if (!s->divClass().isEmpty())
+ out() << "<div class=\"" << s->divClass() << "\">\n"; // QTBUG-9504
+ out() << "<h2>" << protectEnc(s->title()) << "</h2>\n";
+ headerGenerated = true;
+ }
+ if ((*m)->nodeType() != Node::Class)
+ generateDetailedMember(*m, aggregate, marker);
+ else {
+ out() << "<h3> class ";
+ generateFullName(*m, aggregate);
+ out() << "</h3>";
+ generateBrief(*m, marker, aggregate);
+ }
- QStringList names;
- names << (*m)->name();
- if ((*m)->nodeType() == Node::Function) {
- const FunctionNode *func = reinterpret_cast<const FunctionNode *>(*m);
- if (func->isSomeCtor() || func->isDtor() || func->overloadNumber() != 0)
- names.clear();
- }
- else if ((*m)->nodeType() == Node::Property) {
- const PropertyNode *prop = reinterpret_cast<const PropertyNode *>(*m);
- if (!prop->getters().isEmpty() &&
- !names.contains(prop->getters().first()->name()))
- names << prop->getters().first()->name();
- if (!prop->setters().isEmpty())
- names << prop->setters().first()->name();
- if (!prop->resetters().isEmpty())
- names << prop->resetters().first()->name();
- if (!prop->notifiers().isEmpty())
- names << prop->notifiers().first()->name();
- }
- else if ((*m)->nodeType() == Node::Enum) {
- const EnumNode *enume = reinterpret_cast<const EnumNode*>(*m);
- if (enume->flagsType())
- names << enume->flagsType()->name();
-
- foreach (const QString &enumName,
- enume->doc().enumItemNames().toSet() -
- enume->doc().omitEnumItemNames().toSet())
- names << plainCode(marker->markedUpEnumValue(enumName,
- enume));
- }
+ QStringList names;
+ names << (*m)->name();
+ if ((*m)->nodeType() == Node::Function) {
+ const FunctionNode *func = reinterpret_cast<const FunctionNode *>(*m);
+ if (func->isSomeCtor() || func->isDtor() || func->overloadNumber() != 0)
+ names.clear();
+ } else if ((*m)->nodeType() == Node::Property) {
+ const PropertyNode *prop = reinterpret_cast<const PropertyNode *>(*m);
+ if (!prop->getters().isEmpty() &&
+ !names.contains(prop->getters().first()->name()))
+ names << prop->getters().first()->name();
+ if (!prop->setters().isEmpty())
+ names << prop->setters().first()->name();
+ if (!prop->resetters().isEmpty())
+ names << prop->resetters().first()->name();
+ if (!prop->notifiers().isEmpty())
+ names << prop->notifiers().first()->name();
+ } else if ((*m)->nodeType() == Node::Enum) {
+ const EnumNode *enume = reinterpret_cast<const EnumNode*>(*m);
+ if (enume->flagsType())
+ names << enume->flagsType()->name();
+
+ foreach (const QString &enumName,
+ enume->doc().enumItemNames().toSet() -
+ enume->doc().omitEnumItemNames().toSet())
+ names << plainCode(marker->markedUpEnumValue(enumName,
+ enume));
}
++m;
}
- if (!s->divClass().isEmpty())
+ if (headerGenerated && !s->divClass().isEmpty())
out() << "</div>\n"; // QTBUG-9504
++s;
}