summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin Luth <justin.luth@collabora.com>2023-10-03 15:43:00 -0400
committerJustin Luth <jluth@mail.com>2023-10-04 18:41:32 +0200
commit44401e14ff0aab5bc9505c2ec3b78ce91eaf8f4f (patch)
tree7782287a79116c0013e5ba1061172566040d4cef
parent1058d5edc0b6bbaddea2af520d8b5c3e54ec7498 (diff)
related tdf#157572 writerfilter framePr: no vAlign if w:y defined
Documentation suggests that vAlign overrides w:y (as long as vAnchor is not equal to text). However, testing proves the opposite. Only when w:y is not defined does vAlign take effect. make CppunitTest_sw_ooxmlexport5 \ CPPUNIT_TEST_NAME=testTdf157572_defaultVAnchor make CppunitTest_sw_ooxmlexport18 \ CPPUNIT_TEST_NAME=testTdf154703_framePr2 Change-Id: I8a5366d9b6bde0ad838f9584836a85fe79ce8b1b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157528 Tested-by: Justin Luth <jluth@mail.com> Reviewed-by: Justin Luth <jluth@mail.com>
-rw-r--r--sw/qa/extras/ooxmlexport/ooxmlexport18.cxx2
-rw-r--r--sw/qa/extras/ooxmlexport/ooxmlexport5.cxx2
-rw-r--r--sw/source/filter/ww8/docxattributeoutput.cxx3
-rw-r--r--writerfilter/source/dmapper/DomainMapper_Impl.cxx14
4 files changed, 14 insertions, 7 deletions
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport18.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport18.cxx
index ddf14cb6bc10..bf7eb22eb270 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport18.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport18.cxx
@@ -285,6 +285,8 @@ DECLARE_OOXMLEXPORT_TEST(testTdf154703_framePr2, "tdf154703_framePr2.rtf")
assertXPath(pXmlDoc, "//w:body/w:p[1]/w:pPr/w:shd", "fill", "800000");
assertXPath(pXmlDoc, "//w:body/w:p[2]/w:pPr/w:shd", "fill", "548DD4"); // was blue already, no change
assertXPath(pXmlDoc, "//w:body/w:p[3]/w:pPr/w:shd", "fill", "800000");
+ assertXPath(pXmlDoc, "//w:body/w:p[3]/w:pPr/w:framePr", "yAlign", "center");
+ assertXPathNoAttribute(pXmlDoc, "//w:body/w:p[3]/w:pPr/w:framePr", "y");
}
DECLARE_OOXMLEXPORT_TEST(testTdf154703_framePrWrapSpacing, "tdf154703_framePrWrapSpacing.docx")
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport5.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport5.cxx
index 71cea9fa2964..2ee3e1e80bf7 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport5.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport5.cxx
@@ -1437,7 +1437,7 @@ CPPUNIT_TEST_FIXTURE(Test, testTdf157572_defaultVAnchor)
// vAnchor wasn't defined on import. It should default to 'margin' when w:y=non-zero
assertXPath(pXmlDocument, "/w:document/w:body/w:p[1]/w:pPr/w:framePr","vAnchor","margin");
// yAlign=something is not compatible with w:y=non-zero" - don't write anything out
- // assertXPathNoAttribute(pXmlDocument, "/w:document/w:body/w:p[1]/w:pPr/w:framePr", "yAlign");
+ assertXPathNoAttribute(pXmlDocument, "/w:document/w:body/w:p[1]/w:pPr/w:framePr", "yAlign");
}
CPPUNIT_TEST_FIXTURE(Test, testTdf112287B)
diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx b/sw/source/filter/ww8/docxattributeoutput.cxx
index b809870dcf28..1b209d26a0de 100644
--- a/sw/source/filter/ww8/docxattributeoutput.cxx
+++ b/sw/source/filter/ww8/docxattributeoutput.cxx
@@ -1050,7 +1050,6 @@ void DocxAttributeOutput::PopulateFrameProperties(const SwFrameFormat* pFrameFor
attrList->add( FSNS( XML_w, XML_h), OString::number(rSize.Height()));
attrList->add( FSNS( XML_w, XML_x), OString::number(aPos.X));
- attrList->add( FSNS( XML_w, XML_y), OString::number(aPos.Y));
OString aXAlign = convertToOOXMLHoriOrient(rHoriOrient.GetHoriOrient(), /*bIsPosToggle=*/false);
OString aYAlign = convertToOOXMLVertOrient(rVertOrient.GetVertOrient());
@@ -1058,6 +1057,8 @@ void DocxAttributeOutput::PopulateFrameProperties(const SwFrameFormat* pFrameFor
attrList->add(FSNS(XML_w, XML_xAlign), aXAlign);
if (!aYAlign.isEmpty())
attrList->add(FSNS(XML_w, XML_yAlign), aYAlign);
+ else
+ attrList->add( FSNS( XML_w, XML_y), OString::number(aPos.Y));
sal_Int16 nLeft = pFrameFormat->GetLRSpace().GetLeft();
sal_Int16 nRight = pFrameFormat->GetLRSpace().GetRight();
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
index 9c1b32a54927..77528bc546c7 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
@@ -1863,12 +1863,16 @@ DomainMapper_Impl::MakeFrameProperties(const ParagraphProperties& rProps)
comphelper::makePropertyValue(getPropertyName(PROP_VERT_ORIENT_POSITION), nY));
sal_Int16 nVertOrient = text::VertOrientation::NONE;
- for (const auto pProp : vProps)
+ // Testing indicates that yAlign should be ignored if there is any specified w:y
+ if (!bValidY)
{
- if (pProp->GetyAlign() < 0)
- continue;
- nVertOrient = pProp->GetyAlign();
- break;
+ for (const auto pProp : vProps)
+ {
+ if (pProp->GetyAlign() < 0)
+ continue;
+ nVertOrient = pProp->GetyAlign();
+ break;
+ }
}
aFrameProperties.push_back(
comphelper::makePropertyValue(getPropertyName(PROP_VERT_ORIENT), nVertOrient));