summaryrefslogtreecommitdiff
path: root/sw
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.com>2021-10-04 19:55:58 +0200
committerMiklos Vajna <vmiklos@collabora.com>2021-10-05 08:25:16 +0200
commit2d9eddbb23625aad7a9accedbf69209a04169f00 (patch)
treefc723faea446ad670a73707e4d5a67087829ccfc /sw
parent71429b93ec0687bbbedcbb776b38c981f4017177 (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.cxx18
-rw-r--r--sw/source/core/text/porlin.cxx9
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);
}