tdf#135153 DOCX import: avoid line-of-text relation with to-para anchoring
Regression from commit 8f1a1092d4
(tdf#97371 DOCX import: fix text covered by shape, 2016-01-28), the
problem was that once the import decides that a shape should have no
to-char anchoring, it should not leave behind vertical relation types
which make no sense for to-para anchoring.
text::RelOrientation::TEXT_LINE is specific to to-char anchoring, so
reset the relation back to the default text::RelOrientation::FRAME.
This means we'll no longer show "from top" on the UI while the doc model
contains "from bottom": and those have to be in sync, otherwise pressing
"down" while the shape is selected will actually move it up.
Change-Id: I660a7bb30133ea866cc4ba1620ae15fea243ef8f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/109570
Tested-by: Jenkins
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
This commit is contained in:
parent
474398937b
commit
3303a4c5f2
3 changed files with 29 additions and 0 deletions
|
@ -165,6 +165,27 @@ CPPUNIT_TEST_FIXTURE(Test, testWrapPolyCrop)
|
|||
// were wrapping around the image, not only 2 as Word does it.
|
||||
CPPUNIT_ASSERT_EQUAL(2368., aPolygon.getB2DPoint(0).getY());
|
||||
}
|
||||
|
||||
CPPUNIT_TEST_FIXTURE(Test, testTextboxTextline)
|
||||
{
|
||||
// Load a document with a shape with a textbox.
|
||||
// The shape's vertical relation is <wp:positionV relativeFrom="line">.
|
||||
OUString aURL = m_directories.getURLFromSrc(DATA_DIRECTORY) + "textbox-textline.docx";
|
||||
getComponent() = loadFromDesktop(aURL);
|
||||
uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(getComponent(), uno::UNO_QUERY);
|
||||
uno::Reference<drawing::XDrawPage> xDrawPage = xDrawPageSupplier->getDrawPage();
|
||||
uno::Reference<beans::XPropertySet> xShape(xDrawPage->getByIndex(0), uno::UNO_QUERY);
|
||||
sal_Int16 nActual{};
|
||||
CPPUNIT_ASSERT(xShape->getPropertyValue("VertOrientRelation") >>= nActual);
|
||||
|
||||
// Without the accompanying fix in place, this test would have failed with:
|
||||
// - Expected: 0 (text::RelOrientation::FRAME)
|
||||
// - Actual : 9 (text::RelOrientation::TEXT_LINE)
|
||||
// i.e. the relation had a value which doesn't make sense for to-para anchoring (only for
|
||||
// to-char anchoring).
|
||||
sal_Int16 nExpected = text::RelOrientation::FRAME;
|
||||
CPPUNIT_ASSERT_EQUAL(nExpected, nActual);
|
||||
}
|
||||
}
|
||||
|
||||
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
||||
|
|
BIN
writerfilter/qa/cppunittests/dmapper/data/textbox-textline.docx
Normal file
BIN
writerfilter/qa/cppunittests/dmapper/data/textbox-textline.docx
Normal file
Binary file not shown.
|
@ -872,6 +872,14 @@ void GraphicImport::lcl_attribute(Id nName, Value& rValue)
|
|||
eAnchorType = text::TextContentAnchorType_AT_CHARACTER;
|
||||
|
||||
xShapeProps->setPropertyValue("AnchorType", uno::makeAny(eAnchorType));
|
||||
|
||||
if (m_pImpl->nVertRelation == text::RelOrientation::TEXT_LINE && bTextBox)
|
||||
{
|
||||
// TEXT_LINE to specific to to-char anchoring, we have to-para, so reset
|
||||
// to default.
|
||||
m_pImpl->nVertRelation = text::RelOrientation::FRAME;
|
||||
}
|
||||
|
||||
if (m_pImpl->bLayoutInCell && bTextBox && m_pImpl->rDomainMapper.IsInTable()
|
||||
&& m_pImpl->nHoriRelation == text::RelOrientation::PAGE_FRAME)
|
||||
m_pImpl->nHoriRelation = text::RelOrientation::FRAME;
|
||||
|
|
Loading…
Reference in a new issue