From e469ee1340093e28234cc359a3e131998710030d Mon Sep 17 00:00:00 2001
From: Martin Smith <martin.smith@digia.com>
Date: Wed, 15 May 2013 13:27:55 +0200
Subject: [PATCH] qdoc: Brief attribute was written incorrectly
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

The brief attribute for a C++ property was being written
after the <property> tag had been closed. This has been
fixed by explicitlty writing the brief attribute for each
XML tag that has a brief text to write.

Task-number: QTBUG-31149
Change-Id: Ic3857b8fa50cfb84536b838771751d8b92ed590e
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
---
 src/tools/qdoc/qdocindexfiles.cpp | 18 +++++++++++++++---
 1 file changed, 15 insertions(+), 3 deletions(-)

diff --git a/src/tools/qdoc/qdocindexfiles.cpp b/src/tools/qdoc/qdocindexfiles.cpp
index d984681a081..daba2cc78a1 100644
--- a/src/tools/qdoc/qdocindexfiles.cpp
+++ b/src/tools/qdoc/qdocindexfiles.cpp
@@ -758,6 +758,7 @@ bool QDocIndexFiles::generateIndexSection(QXmlStreamWriter& writer,
         writer.writeAttribute("since", node->since());
     }
 
+    QString brief = node->doc().briefText().toString();
     switch (node->type()) {
     case Node::Class:
         {
@@ -773,6 +774,8 @@ bool QDocIndexFiles::generateIndexSection(QXmlStreamWriter& writer,
             if (!node->moduleName().isEmpty())
                 writer.writeAttribute("module", node->moduleName());
             writeMembersAttribute(writer, classNode, Node::Document, Node::Group, "groups");
+            if (!brief.isEmpty())
+                writer.writeAttribute("brief", brief);
         }
         break;
     case Node::Namespace:
@@ -781,6 +784,8 @@ bool QDocIndexFiles::generateIndexSection(QXmlStreamWriter& writer,
             if (!namespaceNode->moduleName().isEmpty())
                 writer.writeAttribute("module", namespaceNode->moduleName());
             writeMembersAttribute(writer, namespaceNode, Node::Document, Node::Group, "groups");
+            if (!brief.isEmpty())
+                writer.writeAttribute("brief", brief);
         }
         break;
     case Node::Document:
@@ -847,6 +852,8 @@ bool QDocIndexFiles::generateIndexSection(QXmlStreamWriter& writer,
                 writer.writeAttribute("module", node->moduleName());
             }
             writeMembersAttribute(writer, docNode, Node::Document, Node::Group, "groups");
+            if (!brief.isEmpty())
+                writer.writeAttribute("brief", brief);
         }
         break;
     case Node::Function:
@@ -906,6 +913,8 @@ bool QDocIndexFiles::generateIndexSection(QXmlStreamWriter& writer,
             if (propertyNode)
                 writer.writeAttribute("associated-property", propertyNode->name());
             writer.writeAttribute("type", functionNode->returnType());
+            if (!brief.isEmpty())
+                writer.writeAttribute("brief", brief);
         }
         break;
     case Node::QmlProperty:
@@ -914,12 +923,16 @@ bool QDocIndexFiles::generateIndexSection(QXmlStreamWriter& writer,
             writer.writeAttribute("type", qpn->dataType());
             writer.writeAttribute("attached", qpn->isAttached() ? "true" : "false");
             writer.writeAttribute("writable", qpn->isWritable(qdb_) ? "true" : "false");
+            if (!brief.isEmpty())
+                writer.writeAttribute("brief", brief);
         }
         break;
     case Node::Property:
         {
             const PropertyNode* propertyNode = static_cast<const PropertyNode*>(node);
             writer.writeAttribute("type", propertyNode->dataType());
+            if (!brief.isEmpty())
+                writer.writeAttribute("brief", brief);
             foreach (const Node* fnNode, propertyNode->getters()) {
                 if (fnNode) {
                     const FunctionNode* functionNode = static_cast<const FunctionNode*>(fnNode);
@@ -959,14 +972,13 @@ bool QDocIndexFiles::generateIndexSection(QXmlStreamWriter& writer,
             const VariableNode* variableNode = static_cast<const VariableNode*>(node);
             writer.writeAttribute("type", variableNode->dataType());
             writer.writeAttribute("static", variableNode->isStatic() ? "true" : "false");
+            if (!brief.isEmpty())
+                writer.writeAttribute("brief", brief);
         }
         break;
     default:
         break;
     }
-    QString brief = node->doc().briefText().toString();
-    if (!brief.isEmpty())
-        writer.writeAttribute("brief", brief);
 
     // Inner nodes and function nodes contain child nodes of some sort, either
     // actual child nodes or function parameters. For these, we close the
-- 
GitLab