diff options
author | Miklos Vajna <vmiklos@collabora.com> | 2021-10-04 19:55:58 +0200 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.com> | 2021-10-05 08:25:16 +0200 |
commit | 2d9eddbb23625aad7a9accedbf69209a04169f00 (patch) | |
tree | fc723faea446ad670a73707e4d5a67087829ccfc /sw | |
parent | 71429b93ec0687bbbedcbb776b38c981f4017177 (diff) |
sw layout xml dump: show width/height/length even for multi-portions
The old SwPortionHandler-based approach doesn't handle multi-portions.
Change-Id: I6702e7af3b9fe7e4c25692c22e8f35d9ab98f67a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/123061
Tested-by: Jenkins
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Diffstat (limited to 'sw')
-rw-r--r-- | sw/qa/extras/uiwriter/uiwriter4.cxx | 18 | ||||
-rw-r--r-- | sw/source/core/text/porlin.cxx | 9 |
2 files changed, 16 insertions, 11 deletions
diff --git a/sw/qa/extras/uiwriter/uiwriter4.cxx b/sw/qa/extras/uiwriter/uiwriter4.cxx index acafb12e4cc5..03c0d3857a73 100644 --- a/sw/qa/extras/uiwriter/uiwriter4.cxx +++ b/sw/qa/extras/uiwriter/uiwriter4.cxx @@ -1580,24 +1580,20 @@ void SwUiWriterTest4::testTdf107025() createSwDoc(DATA_DIRECTORY, "tdf107025.odt"); xmlDocUniquePtr pXmlDoc = parseLayoutDump(); // Verify the number of characters in each line. - CPPUNIT_ASSERT_EQUAL( - sal_Int32(1), - getXPath(pXmlDoc, "(//Text[@nType='PortionType::Text'])[1]", "nLength").toInt32()); - CPPUNIT_ASSERT_EQUAL( - sal_Int32(9), - getXPath(pXmlDoc, "(//Text[@nType='PortionType::Text'])[2]", "nLength").toInt32()); + CPPUNIT_ASSERT_EQUAL(sal_Int32(1), + getXPath(pXmlDoc, "(//SwLinePortion)[1]", "length").toInt32()); + CPPUNIT_ASSERT_EQUAL(sal_Int32(9), + getXPath(pXmlDoc, "(//SwLinePortion)[2]", "length").toInt32()); // Do the subsequent test only if the first line can be displayed, // in case that the required font does not exist. - sal_Int32 nWidth1 - = getXPath(pXmlDoc, "(//Text[@nType='PortionType::Text'])[1]", "nWidth").toInt32(); + sal_Int32 nWidth1 = getXPath(pXmlDoc, "(//SwLinePortion)[1]", "width").toInt32(); if (!nWidth1) return; - CPPUNIT_ASSERT(!parseDump("(//Text[@nType='PortionType::Text'])[2]", "nWidth").isEmpty()); + CPPUNIT_ASSERT(!parseDump("(//SwLinePortion)[2]", "width").isEmpty()); // Width of the second line is expected to be 9 times of the first. - sal_Int32 nWidth2 - = getXPath(pXmlDoc, "(//Text[@nType='PortionType::Text'])[2]", "nWidth").toInt32(); + sal_Int32 nWidth2 = getXPath(pXmlDoc, "(//SwLinePortion)[2]", "width").toInt32(); CPPUNIT_ASSERT_EQUAL(sal_Int32(9), nWidth2 / nWidth1); } diff --git a/sw/source/core/text/porlin.cxx b/sw/source/core/text/porlin.cxx index d7268fd5f6e6..439382a92b63 100644 --- a/sw/source/core/text/porlin.cxx +++ b/sw/source/core/text/porlin.cxx @@ -322,6 +322,15 @@ void SwLinePortion::dumpAsXml(xmlTextWriterPtr pWriter) const (void)xmlTextWriterStartElement(pWriter, BAD_CAST("SwLinePortion")); (void)xmlTextWriterWriteFormatAttribute(pWriter, BAD_CAST("ptr"), "%p", this); (void)xmlTextWriterWriteAttribute(pWriter, BAD_CAST("symbol"), BAD_CAST(typeid(*this).name())); + (void)xmlTextWriterWriteAttribute( + pWriter, BAD_CAST("width"), + BAD_CAST(OString::number(Width()).getStr())); + (void)xmlTextWriterWriteAttribute( + pWriter, BAD_CAST("height"), + BAD_CAST(OString::number(Height()).getStr())); + (void)xmlTextWriterWriteAttribute( + pWriter, BAD_CAST("length"), + BAD_CAST(OString::number(static_cast<sal_Int32>(mnLineLength)).getStr())); (void)xmlTextWriterEndElement(pWriter); } |