summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/qdoc/cppcodeparser.cpp7
-rw-r--r--src/qdoc/doc/qdoc-manual-markupcmds.qdoc31
-rw-r--r--src/qdoc/docbookgenerator.cpp22
-rw-r--r--src/qdoc/docbookgenerator.h5
-rw-r--r--src/qdoc/docparser.cpp10
-rw-r--r--src/qdoc/htmlgenerator.cpp16
-rw-r--r--src/qdoc/htmlgenerator.h2
-rw-r--r--tests/auto/qdoc/generatedoutput/expected_output/docbook/qmlmodules.xml44
-rw-r--r--tests/auto/qdoc/generatedoutput/expected_output/html/test-componentset-example.webxml2
-rw-r--r--tests/auto/qdoc/generatedoutput/expected_output/qmlmodules.html13
-rw-r--r--tests/auto/qdoc/generatedoutput/testdata/qml/modules.qdoc4
-rw-r--r--tests/auto/qdoc/generatedoutput/tst_generatedoutput.cpp1
12 files changed, 27 insertions, 130 deletions
diff --git a/src/qdoc/cppcodeparser.cpp b/src/qdoc/cppcodeparser.cpp
index 685284c59..9b425114c 100644
--- a/src/qdoc/cppcodeparser.cpp
+++ b/src/qdoc/cppcodeparser.cpp
@@ -509,11 +509,8 @@ void CppCodeParser::processMetaCommand(const Doc &doc, const QString &command,
if (!argPair.second.isEmpty())
node->setDeprecatedSince(argPair.second);
} else if (command == COMMAND_INGROUP || command == COMMAND_INPUBLICGROUP) {
- // Use bracketed argument as a prefix; used internally by '\meta category'
- if (!argPair.second.isEmpty())
- database->addToGroup(argPair.second + " " + arg, node);
- else
- database->addToGroup(arg, node);
+ // Note: \ingroup and \inpublicgroup are the same (and now recognized as such).
+ database->addToGroup(arg, node);
} else if (command == COMMAND_INMODULE) {
database->addToModule(arg, node);
} else if (command == COMMAND_INQMLMODULE) {
diff --git a/src/qdoc/doc/qdoc-manual-markupcmds.qdoc b/src/qdoc/doc/qdoc-manual-markupcmds.qdoc
index d116a8385..67dc123e7 100644
--- a/src/qdoc/doc/qdoc-manual-markupcmds.qdoc
+++ b/src/qdoc/doc/qdoc-manual-markupcmds.qdoc
@@ -3356,9 +3356,8 @@
\section1 \\generatelist
The \\generatelist command expands to a list of links to the
- documentation entities grouped with an \l {ingroup-command}
- {\\ingroup} command or entities that match one of the arguments
- listed below. An example from the Qt Reference Documentation:
+ documentation entities in a group. Below is an example from the Qt
+ Reference Documentation:
\badcode *
/\1!
@@ -3375,11 +3374,6 @@
This generates the \e {All Classes} page. The command accepts the
following arguments:
- \section2 \c {<group-name>}
-
- With a group name as the only argument, QDoc lists all entities that
- use the \c {\ingroup <group-name>} command.
-
\target table example
\section2 \c annotatedclasses
@@ -3549,27 +3543,6 @@
The \c attributions argument is used to tell QDoc to generate a list
of attributions in the documentation.
- \section2 \c {category <category-name>}
-
- The \c category argument generates a list of members that use the
- \l {meta-command}{\\meta} command to specify a \e category:
-
- \badcode *
- /\1!
- \example chat
- \meta category {Networking Examples}
- \1/
- \endcode
-
- Use the following \\generatelist command to output a list of
- of examples in the \e {Networking Examples} category:
-
- \badcode
- \generatelist category {Networking Examples}
- \endcode
-
- See also \l {meta-command}{\\meta}.
-
\section2 \c related
The \c related argument is used in combination with the \l
diff --git a/src/qdoc/docbookgenerator.cpp b/src/qdoc/docbookgenerator.cpp
index ceb2fa301..5f370c954 100644
--- a/src/qdoc/docbookgenerator.cpp
+++ b/src/qdoc/docbookgenerator.cpp
@@ -501,10 +501,7 @@ qsizetype DocBookGenerator::generateAtom(const Atom *atom, const Node *relative)
|| atom->string() == QLatin1String("related")) {
generateList(relative, atom->string());
hasGeneratedSomething = true; // Approximation, because there is
- // some nontrivial logic in generateList.
- } else if (const auto *cn = m_qdb->getCollectionNode(atom->string(), Node::Group); cn) {
- generateAnnotatedList(cn, cn->members(), atom->string(), ItemizedList);
- hasGeneratedSomething = true; // Approximation
+ // some nontrivial logic in generateList.
}
// There must still be some content generated for the DocBook document
@@ -1923,7 +1920,7 @@ void DocBookGenerator::generateList(const Node *relative, const QString &selecto
A two-column table is output.
*/
void DocBookGenerator::generateAnnotatedList(const Node *relative, const NodeList &nodeList,
- const QString &selector, GeneratedListType type)
+ const QString &selector, bool withSectionIfNeeded)
{
if (nodeList.isEmpty())
return;
@@ -1936,14 +1933,13 @@ void DocBookGenerator::generateAnnotatedList(const Node *relative, const NodeLis
// Detect if there is a need for a variablelist (i.e. titles mapped to
// descriptions) or a regular itemizedlist (only titles).
- bool noItemsHaveTitle =
- type == ItemizedList || std::all_of(nodeList.begin(), nodeList.end(),
- [](const Node* node) {
- return node->doc().briefText().toString().isEmpty();
- });
+ bool noItemsHaveTitle = std::all_of(nodeList.begin(), nodeList.end(),
+ [](const Node* node) {
+ return node->doc().briefText().toString().isEmpty();
+ });
// Wrap the list in a section if needed.
- if (type == AutoSection && m_hasSection)
+ if (withSectionIfNeeded && m_hasSection)
startSection("", "Contents");
// From WebXMLGenerator::generateAnnotatedList.
@@ -1990,7 +1986,7 @@ void DocBookGenerator::generateAnnotatedList(const Node *relative, const NodeLis
newLine();
}
- if (type == AutoSection && m_hasSection)
+ if (withSectionIfNeeded && m_hasSection)
endSection();
}
@@ -5263,7 +5259,7 @@ void DocBookGenerator::generateCollectionNode(CollectionNode *cn)
generateAlsoList(cn);
if (!cn->noAutoList() && (cn->isGroup() || cn->isQmlModule()))
- generateAnnotatedList(cn, cn->members(), "members", AutoSection);
+ generateAnnotatedList(cn, cn->members(), "members", true);
if (generatedTitle)
endSection();
diff --git a/src/qdoc/docbookgenerator.h b/src/qdoc/docbookgenerator.h
index dfcbcc62c..dce074c03 100644
--- a/src/qdoc/docbookgenerator.h
+++ b/src/qdoc/docbookgenerator.h
@@ -67,16 +67,13 @@ protected:
qsizetype generateAtom(const Atom *atom, const Node *relative) override;
private:
-
- enum GeneratedListType { Auto, AutoSection, ItemizedList };
-
QXmlStreamWriter *startDocument(const Node *node);
QXmlStreamWriter *startDocument(const ExampleNode *en, const QString &file);
QXmlStreamWriter *startGenericDocument(const Node *node, const QString &fileName);
void endDocument();
void generateAnnotatedList(const Node *relative, const NodeList &nodeList,
- const QString &selector, GeneratedListType type = Auto);
+ const QString &selector, bool withSectionIfNeeded = false);
void generateAnnotatedLists(const Node *relative, const NodeMultiMap &nmm,
const QString &selector);
void generateCompactList(const Node *relative, const NodeMultiMap &nmm, bool includeAlphabet,
diff --git a/src/qdoc/docparser.cpp b/src/qdoc/docparser.cpp
index f4a5edb4d..74e9584e8 100644
--- a/src/qdoc/docparser.cpp
+++ b/src/qdoc/docparser.cpp
@@ -693,15 +693,7 @@ void DocParser::parse(const QString &source, DocPrivate *docPrivate,
case CMD_META:
m_private->constructExtra();
p1 = getArgument();
- p2 = getArgument();
- m_private->extra->m_metaMap.insert(p1, p2);
- // Special case: \meta category adds also a a group 'category<arg>'
- if (p1 == QLatin1String("category")) {
- QString extraCmd{"ingroup"};
- Q_ASSERT(metaCommandSet.contains(extraCmd));
- m_private->m_metacommandsUsed.insert(extraCmd);
- m_private->m_metaCommandMap[extraCmd].append(ArgPair(p2, p1));
- }
+ m_private->extra->m_metaMap.insert(p1, getArgument());
break;
case CMD_NOTE:
leavePara();
diff --git a/src/qdoc/htmlgenerator.cpp b/src/qdoc/htmlgenerator.cpp
index b2f588275..829950615 100644
--- a/src/qdoc/htmlgenerator.cpp
+++ b/src/qdoc/htmlgenerator.cpp
@@ -2916,9 +2916,10 @@ void HtmlGenerator::generateQmlItem(const Node *node, const Node *relative, Code
}
/*!
- This function generates a simple unordered list for the members
- of collection node \a {cn}. Returns \c true if the list was
- generated (collection has members), \c false otherwise.
+ This function generates a simple bullet list for the members
+ of collection node \a {cn}. The collection node must be a group
+ and must not be empty. If it is empty, nothing is output, and
+ false is returned. Otherewise, the list is generated and true is returned.
*/
bool HtmlGenerator::generateGroupList(CollectionNode *cn)
{
@@ -2926,10 +2927,11 @@ bool HtmlGenerator::generateGroupList(CollectionNode *cn)
if (cn->members().isEmpty())
return false;
out() << "<ul>\n";
- for (const auto *node : cn->members()) {
- out() << "<li>";
- generateFullName(node, nullptr);
- out() << "</li>\n";
+ const auto members = cn->members();
+ for (const auto *node : members) {
+ out() << "<li>"
+ << "<a href=\"#" << Doc::canonicalTitle(node->title()) << "\">" << node->title()
+ << "</a></li>\n";
}
out() << "</ul>\n";
return true;
diff --git a/src/qdoc/htmlgenerator.h b/src/qdoc/htmlgenerator.h
index bf5f4de50..3c12ce328 100644
--- a/src/qdoc/htmlgenerator.h
+++ b/src/qdoc/htmlgenerator.h
@@ -75,7 +75,7 @@ private:
bool includeAlphabet, const QString &commonPrefix);
void generateFunctionIndex(const Node *relative);
void generateLegaleseList(const Node *relative, CodeMarker *marker);
- [[nodiscard]] bool generateGroupList(CollectionNode *cn);
+ bool generateGroupList(CollectionNode *cn);
void generateList(const Node *relative, CodeMarker *marker, const QString &selector);
void generateSectionList(const Section &section, const Node *relative, CodeMarker *marker,
bool useObsoloteMembers = false);
diff --git a/tests/auto/qdoc/generatedoutput/expected_output/docbook/qmlmodules.xml b/tests/auto/qdoc/generatedoutput/expected_output/docbook/qmlmodules.xml
deleted file mode 100644
index 3c99e7916..000000000
--- a/tests/auto/qdoc/generatedoutput/expected_output/docbook/qmlmodules.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<db:article xmlns:db="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.2" xml:lang="en">
-<db:info>
-<db:title>QML Modules</db:title>
-<db:productname>Test</db:productname>
-<db:titleabbrev>A test project for QDoc build artifacts</db:titleabbrev>
-<db:abstract>
-<db:para>A test project for QDoc build artifacts.</db:para></db:abstract>
-</db:info>
-<db:variablelist role="qml-modules">
-<db:varlistentry>
-<db:term><db:link xlink:href="test-empty-qmlmodule.xml" xlink:role="">No QML Types Here</db:link></db:term>
-<db:listitem>
-<db:para>A QML module with no member types.</db:para>
-</db:listitem>
-</db:varlistentry>
-<db:varlistentry>
-<db:term><db:link xlink:href="qdoc-test-qmlmodule.xml" xlink:role="">QDoc.Test QML Module</db:link></db:term>
-<db:listitem>
-<db:para>QML Types for the Test module.</db:para>
-</db:listitem>
-</db:varlistentry>
-<db:varlistentry>
-<db:term><db:link xlink:href="uicomponents-qmlmodule.xml" xlink:role="">UI Components</db:link></db:term>
-<db:listitem>
-<db:para>Basic set of UI components.</db:para>
-</db:listitem>
-</db:varlistentry>
-<db:varlistentry>
-<db:term><db:link xlink:href="test-nover-qmlmodule.xml" xlink:role="">Versionless QML Module</db:link></db:term>
-<db:listitem>
-<db:para>QML Types for the Test module without version.</db:para>
-</db:listitem>
-</db:varlistentry>
-</db:variablelist>
-<db:section xml:id="examples">
-<db:title>Examples</db:title>
-<db:variablelist role="category Application Example">
-<db:listitem>
-<db:para><db:link xlink:href="test-componentset-example.xml" xlink:role="page">QML Documentation Example</db:link></db:para>
-</db:listitem>
-</db:variablelist>
-</db:section>
-</db:article>
diff --git a/tests/auto/qdoc/generatedoutput/expected_output/html/test-componentset-example.webxml b/tests/auto/qdoc/generatedoutput/expected_output/html/test-componentset-example.webxml
index dc77823e2..600f2f3ed 100644
--- a/tests/auto/qdoc/generatedoutput/expected_output/html/test-componentset-example.webxml
+++ b/tests/auto/qdoc/generatedoutput/expected_output/html/test-componentset-example.webxml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<WebXML>
<document>
- <page name="componentset" href="test-componentset-example.html" status="active" location="examples.qdoc" documented="true" groups="category Application Example" subtype="example" title="QML Documentation Example" fulltitle="QML Documentation Example" subtitle="" brief="Example for documenting QML types">
+ <page name="componentset" href="test-componentset-example.html" status="active" location="examples.qdoc" documented="true" subtype="example" title="QML Documentation Example" fulltitle="QML Documentation Example" subtitle="" brief="Example for documenting QML types">
<contents name="qml-class" title="QML Class" level="1"/>
<contents name="properties-signals-handlers-and-methods" title="Properties, Signals, Handlers, and Methods" level="1"/>
<contents name="internal-documentation" title="Internal Documentation" level="2"/>
diff --git a/tests/auto/qdoc/generatedoutput/expected_output/qmlmodules.html b/tests/auto/qdoc/generatedoutput/expected_output/qmlmodules.html
index efc9eebcd..3f1a3e78c 100644
--- a/tests/auto/qdoc/generatedoutput/expected_output/qmlmodules.html
+++ b/tests/auto/qdoc/generatedoutput/expected_output/qmlmodules.html
@@ -6,14 +6,7 @@
<title>QML Modules | Test</title>
</head>
<body>
-<div class="sidebar">
-<div class="toc">
-<h3 id="toc">Contents</h3>
-<ul>
-<li class="level1"><a href="#examples">Examples</a></li>
-</ul>
-</div>
-<div class="sidebar-content" id="sidebar-content"></div></div>
+<div class="sidebar"><div class="sidebar-content" id="sidebar-content"></div></div>
<h1 class="title">QML Modules</h1>
<!-- $$$qmlmodules.html-description -->
<div class="descr" id="details">
@@ -23,10 +16,6 @@
<tr class="odd topAlign"><td class="tblName" translate="no"><p><a href="uicomponents-qmlmodule.html">UI Components</a></p></td><td class="tblDescr"><p>Basic set of UI components.</p></td></tr>
<tr class="even topAlign"><td class="tblName" translate="no"><p><a href="test-nover-qmlmodule.html">Versionless QML Module</a></p></td><td class="tblDescr"><p>QML Types for the Test module without version.</p></td></tr>
</table></div>
-<h2 id="examples">Examples</h2>
-<ul>
-<li><a href="test-componentset-example.html">QML Documentation Example</a></li>
-</ul>
</div>
<!-- @@@qmlmodules.html -->
</body>
diff --git a/tests/auto/qdoc/generatedoutput/testdata/qml/modules.qdoc b/tests/auto/qdoc/generatedoutput/testdata/qml/modules.qdoc
index e2177b4f9..f5b7614d9 100644
--- a/tests/auto/qdoc/generatedoutput/testdata/qml/modules.qdoc
+++ b/tests/auto/qdoc/generatedoutput/testdata/qml/modules.qdoc
@@ -6,8 +6,4 @@
\title QML Modules
\generatelist qml-modules
-
- \section1 Examples
-
- \generatelist category {Application Example}
*/
diff --git a/tests/auto/qdoc/generatedoutput/tst_generatedoutput.cpp b/tests/auto/qdoc/generatedoutput/tst_generatedoutput.cpp
index 6b48d914d..69d930ff4 100644
--- a/tests/auto/qdoc/generatedoutput/tst_generatedoutput.cpp
+++ b/tests/auto/qdoc/generatedoutput/tst_generatedoutput.cpp
@@ -321,7 +321,6 @@ void tst_generatedOutput::docBookFromCpp()
void tst_generatedOutput::docBookFromQml()
{
testAndCompare("testdata/configs/docbook_testqml.qdocconf",
- "docbook/qmlmodules.xml "
"docbook/test-componentset-example.xml "
"docbook/uicomponents-qmlmodule.xml "
"docbook/qdoc-test-qmlmodule.xml "