summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Kaganski <mike.kaganski@collabora.com>2023-06-16 16:22:22 +0300
committerMike Kaganski <mike.kaganski@collabora.com>2023-06-16 19:12:34 +0200
commitdf98b6015cd2ae4f1573e12cee1b1bc947adabf0 (patch)
tree1059b2a0c5d5c59ea38b6e594c17a74b791bb9ad
parentea00bc0aaa6543b3353d307c8ee399d56cc712dc (diff)
tdf#155871: don't forget to close li before starting next
When closing a nested list, the previous condition failed to close the last li in case when the next item is numbered (i.e., will need another li). Indeed, if the next item is unnumbered, current last li should stay open. Change-Id: Iad7d83d50d2f02d6bd1d046804b7e23b59f9ce8b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/153179 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
-rw-r--r--sw/qa/extras/htmlexport/data/tdf155871.fodt21
-rw-r--r--sw/qa/extras/htmlexport/htmlexport.cxx12
-rw-r--r--sw/source/filter/html/htmlnumwriter.cxx2
3 files changed, 34 insertions, 1 deletions
diff --git a/sw/qa/extras/htmlexport/data/tdf155871.fodt b/sw/qa/extras/htmlexport/data/tdf155871.fodt
new file mode 100644
index 000000000000..97e29fbe69b8
--- /dev/null
+++ b/sw/qa/extras/htmlexport/data/tdf155871.fodt
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<office:document xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" office:version="1.3" office:mimetype="application/vnd.oasis.opendocument.text">
+ <office:body>
+ <office:text>
+ <text:list>
+ <text:list-item>
+ <text:p>foo</text:p>
+ <text:list>
+ <text:list-item>
+ <text:p>bar</text:p>
+ </text:list-item>
+ </text:list>
+ </text:list-item>
+ <text:list-item>
+ <text:p>baz</text:p>
+ </text:list-item>
+ </text:list>
+ </office:text>
+ </office:body>
+</office:document> \ No newline at end of file
diff --git a/sw/qa/extras/htmlexport/htmlexport.cxx b/sw/qa/extras/htmlexport/htmlexport.cxx
index c4479353e7f5..496ba550729c 100644
--- a/sw/qa/extras/htmlexport/htmlexport.cxx
+++ b/sw/qa/extras/htmlexport/htmlexport.cxx
@@ -2687,6 +2687,18 @@ CPPUNIT_TEST_FIXTURE(SwHtmlDomExportTest, testReqIF_ListsWithNumFormat)
assertXPathNoAttribute(pDoc, "/reqif-xhtml:html/reqif-xhtml:div/reqif-xhtml:ol[4]", "type");
}
+CPPUNIT_TEST_FIXTURE(SwHtmlDomExportTest, testTdf155871)
+{
+ createSwDoc("tdf155871.fodt");
+ ExportToReqif();
+
+ SvMemoryStream aStream;
+ WrapReqifFromTempFile(aStream);
+ xmlDocUniquePtr pDoc = parseXmlStream(&aStream);
+ // Without the fix in place, this would fail
+ CPPUNIT_ASSERT(pDoc);
+}
+
CPPUNIT_PLUGIN_IMPLEMENT();
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/filter/html/htmlnumwriter.cxx b/sw/source/filter/html/htmlnumwriter.cxx
index 6f8f52cc3f7c..8fa9b0074c99 100644
--- a/sw/source/filter/html/htmlnumwriter.cxx
+++ b/sw/source/filter/html/htmlnumwriter.cxx
@@ -320,7 +320,7 @@ SwHTMLWriter& OutHTML_NumberBulletListEnd( SwHTMLWriter& rWrt,
else
aTag = OOO_STRING_SVTOOLS_HTML_orderlist;
HTMLOutFuncs::Out_AsciiTag( rWrt.Strm(), Concat2View(rWrt.GetNamespace() + aTag), false );
- if (rWrt.mbXHTML && i != nNextDepth + 1)
+ if (rWrt.mbXHTML && (i != nNextDepth + 1 || (i != 1 && rNextInfo.IsNumbered())))
{
// for all skipped sublevels, close a li
HTMLOutFuncs::Out_AsciiTag(