summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLuciano Wolf <luciano.wolf@openbossa.org>2011-03-04 15:56:41 -0300
committerLuciano Wolf <luciano.wolf@openbossa.org>2011-03-04 16:30:52 -0300
commitf238cebb57200ce38796fad8f78801446943ebff (patch)
tree9c9f39f73cf3d7dd095190ea7b3e145e87b54286
parentbb6612e2cb07f4ef64a5a3fd032cfc87ed8aaf30 (diff)
Fix bug #532 - "QNetworkSession documentation formatting broken"
Reviewer: Marcelo Lira <marcelo.lira@openbossa.org> Lauro Moura <lauro.neto@openbossa.org>
-rw-r--r--generators/qtdoc/qtdocgenerator.cpp6
-rw-r--r--tests/sphinxtabletest.cpp58
-rw-r--r--tests/sphinxtabletest.h1
3 files changed, 65 insertions, 0 deletions
diff --git a/generators/qtdoc/qtdocgenerator.cpp b/generators/qtdoc/qtdocgenerator.cpp
index cd78b858..ae7dcadf 100644
--- a/generators/qtdoc/qtdocgenerator.cpp
+++ b/generators/qtdoc/qtdocgenerator.cpp
@@ -718,10 +718,14 @@ void QtXmlToSphinx::Table::normalize()
int col;
QtXmlToSphinx::Table& self = *this;
+ //QDoc3 generates tables with wrong number of columns. We have to
+ //check and if necessary, merge the last columns.
+ int maxCols = self.at(0).count();
// add col spans
for (row = 0; row < count(); ++row) {
for (col = 0; col < at(row).count(); ++col) {
QtXmlToSphinx::TableCell& cell = self[row][col];
+ bool mergeCols = (col >= maxCols);
if (cell.colSpan > 0) {
QtXmlToSphinx::TableCell newCell;
newCell.colSpan = -1;
@@ -730,6 +734,8 @@ void QtXmlToSphinx::Table::normalize()
}
cell.colSpan = 0;
col++;
+ } else if (mergeCols) {
+ self[row][maxCols - 1].data += " " + cell.data;
}
}
}
diff --git a/tests/sphinxtabletest.cpp b/tests/sphinxtabletest.cpp
index a35d1192..c1ba59e6 100644
--- a/tests/sphinxtabletest.cpp
+++ b/tests/sphinxtabletest.cpp
@@ -262,6 +262,64 @@ void SphinxTableTest::testRowSpan2()
\n"));
}
+void SphinxTableTest::testBrokenTable()
+{
+ const char* xml = "\
+<table>\
+ <header>\
+ <item>\
+ <para>Header 1</para>\
+ </item>\
+ <item>\
+ <para>Header 2</para>\
+ </item>\
+ </header>\
+ <row>\
+ <item>\
+ <para>1.1</para>\
+ </item>\
+ <item>\
+ <para>1.2</para>\
+ </item>\
+ </row>\
+ <row>\
+ <item colspan=\"2\">\
+ <para>2 2</para>\
+ </item>\
+ <item>\
+ <para>2 3</para>\
+ </item>\
+ <item>\
+ <para>2 4</para>\
+ </item>\
+ <item>\
+ <para>2 5</para>\
+ </item>\
+ </row>\
+ <row>\
+ <item>\
+ <para>3 1</para>\
+ </item>\
+ <item>\
+ <para>3 2</para>\
+ </item>\
+ <item>\
+ <para>3 3</para>\
+ </item>\
+ </row>\
+</table>";
+ QCOMPARE(transformXml(xml), QString("\
+ +--------+------------+\n\
+ |Header 1|Header 2 |\n\
+ +--------+------------+\n\
+ |1.1 |1.2 |\n\
+ +--------+------------+\n\
+ |2 2 2 3 2 4 2 5|\n\
+ +--------+------------+\n\
+ |3 1 |3 2 3 3 |\n\
+ +--------+------------+\n\
+\n"));
+}
QTEST_APPLESS_MAIN( SphinxTableTest )
diff --git a/tests/sphinxtabletest.h b/tests/sphinxtabletest.h
index 57d8937d..e056021b 100644
--- a/tests/sphinxtabletest.h
+++ b/tests/sphinxtabletest.h
@@ -39,6 +39,7 @@ private slots:
void testColSpan();
void testComplexTable();
void testRowSpan2();
+ void testBrokenTable();
private:
QtDocGenerator* m_generator;