Related: tdf#124600 DOCX import: ignore left wrap on left-aligned shapes
The DOC import does the same in SwWW8ImplReader::AdjustLRWrapForWordMargins(). This fixes one sub-problem of the bugdoc, so now the shape anchored in the header has a correct position. This made it necessary to re-visit the tdf#115719 testcases, which are minimal reproducers. The original document had from-left alignment (instead of align-to-left), but this did not matter before. Bring the test documents closer to the original large document, so the tests still pass and don't depend on LO mis-handling the above mentioned left-aligned situation. (The interesting property of tdf115719.docx, where Word 2010 and Word 2013 handles the document differently is preserved after this change.) Change-Id: I973c13df47b0867e2c4756f0c448495257b7c9d5 Reviewed-on: https://gerrit.libreoffice.org/79049 Reviewed-by: Miklos Vajna <vmiklos@collabora.com> Tested-by: Jenkins
This commit is contained in:
Binary file not shown.
Binary file not shown.
BIN
sw/qa/extras/ooxmlimport/data/tdf124600.docx
Normal file
BIN
sw/qa/extras/ooxmlimport/data/tdf124600.docx
Normal file
Binary file not shown.
@@ -132,6 +132,17 @@ DECLARE_OOXMLIMPORT_TEST(testGroupShapeFontName, "groupshape-fontname.docx")
|
|||||||
getProperty<OUString>(getRun(getParagraphOfText(1, xText), 1), "CharFontNameAsian"));
|
getProperty<OUString>(getRun(getParagraphOfText(1, xText), 1), "CharFontNameAsian"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DECLARE_OOXMLIMPORT_TEST(testTdf124600, "tdf124600.docx")
|
||||||
|
{
|
||||||
|
uno::Reference<drawing::XShape> xShape = getShape(1);
|
||||||
|
// Without the accompanying fix in place, this test would have failed with:
|
||||||
|
// - Expected: 0
|
||||||
|
// - Actual : 318
|
||||||
|
// i.e. the shape had an unexpected left margin, but not in Word.
|
||||||
|
CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(0),
|
||||||
|
getProperty<sal_Int32>(xShape, "HoriOrientPosition"));
|
||||||
|
}
|
||||||
|
|
||||||
DECLARE_OOXMLIMPORT_TEST(testTdf120548, "tdf120548.docx")
|
DECLARE_OOXMLIMPORT_TEST(testTdf120548, "tdf120548.docx")
|
||||||
{
|
{
|
||||||
// Without the accompanying fix in place, this test would have failed with 'Expected: 00ff0000;
|
// Without the accompanying fix in place, this test would have failed with 'Expected: 00ff0000;
|
||||||
|
@@ -975,7 +975,6 @@ void GraphicImport::ProcessShapeOptions(Value const & rValue)
|
|||||||
switch( m_pImpl->nShapeOptionType )
|
switch( m_pImpl->nShapeOptionType )
|
||||||
{
|
{
|
||||||
case NS_ooxml::LN_CT_Anchor_distL:
|
case NS_ooxml::LN_CT_Anchor_distL:
|
||||||
//todo: changes have to be applied depending on the orientation, see SwWW8ImplReader::AdjustLRWrapForWordMargins()
|
|
||||||
m_pImpl->nLeftMargin = nIntValue / 360;
|
m_pImpl->nLeftMargin = nIntValue / 360;
|
||||||
break;
|
break;
|
||||||
case NS_ooxml::LN_CT_Anchor_distT:
|
case NS_ooxml::LN_CT_Anchor_distT:
|
||||||
@@ -1070,6 +1069,16 @@ void GraphicImport::lcl_sprm(Sprm& rSprm)
|
|||||||
m_pImpl->nHoriRelation = pHandler->relation();
|
m_pImpl->nHoriRelation = pHandler->relation();
|
||||||
m_pImpl->nHoriOrient = pHandler->orientation();
|
m_pImpl->nHoriOrient = pHandler->orientation();
|
||||||
m_pImpl->nLeftPosition = pHandler->position();
|
m_pImpl->nLeftPosition = pHandler->position();
|
||||||
|
|
||||||
|
// Left adjustments: if horizontally aligned to left of margin, then remove the
|
||||||
|
// left wrapping.
|
||||||
|
if (m_pImpl->nHoriOrient == text::HoriOrientation::LEFT)
|
||||||
|
{
|
||||||
|
if (m_pImpl->nHoriRelation == text::RelOrientation::PAGE_PRINT_AREA)
|
||||||
|
{
|
||||||
|
m_pImpl->nLeftMargin = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user