sw/qa/uibase/shells/shells.cxx | 4 +- writerfilter/qa/cppunittests/dmapper/GraphicImport.cxx | 17 ++++++++++ writerfilter/qa/cppunittests/dmapper/data/draw-shape-inline-effect.docx |binary writerfilter/source/dmapper/GraphicImport.cxx | 1 4 files changed, 20 insertions(+), 2 deletions(-)
New commits: commit bf25e69f8f657d5e3bcdd0bd54c5fa0d66ec85fe Author: Miklos Vajna <[email protected]> AuthorDate: Tue Feb 11 09:51:14 2020 +0100 Commit: Miklos Vajna <[email protected]> CommitDate: Tue Feb 11 12:52:23 2020 +0100 DOCX import: fix margins of inline shapes with effects, imported as Draw shapes Effects have an extent, and unhandled effects (like this blurred shadow) need to take space in the margin of the shape to make sure they use the correct amount of space in the layout. This was working in general, but not in case the importer decided to import the shape as Draw shape + the shape was inline. (And also disable a new CppunitTest_sw_uibase_shells test on Windows, which is only stable on Linux, it seems.) Change-Id: I9d0531d9393d8c2cd274e6f54bbbfe8024bf270f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/88427 Reviewed-by: Miklos Vajna <[email protected]> Tested-by: Jenkins diff --git a/sw/qa/uibase/shells/shells.cxx b/sw/qa/uibase/shells/shells.cxx index 57ad5687f7d2..5c9468f3f991 100644 --- a/sw/qa/uibase/shells/shells.cxx +++ b/sw/qa/uibase/shells/shells.cxx @@ -79,8 +79,8 @@ CPPUNIT_TEST_FIXTURE(SwUibaseShellsTest, testTdf130179) CPPUNIT_TEST_FIXTURE(SwUibaseShellsTest, testShapeTextAlignment) { -// FIXME find out why this fails on macOS -#ifndef MACOSX +// FIXME find out why this fails on macOS/Windows +#if !defined(MACOSX) && !defined(_WIN32) // Create a document with a rectangle in it. SwDoc* pDoc = createDoc(); SwWrtShell* pWrtShell = pDoc->GetDocShell()->GetWrtShell(); diff --git a/writerfilter/qa/cppunittests/dmapper/GraphicImport.cxx b/writerfilter/qa/cppunittests/dmapper/GraphicImport.cxx index 4c694ac3d083..73f863b02100 100644 --- a/writerfilter/qa/cppunittests/dmapper/GraphicImport.cxx +++ b/writerfilter/qa/cppunittests/dmapper/GraphicImport.cxx @@ -68,6 +68,23 @@ CPPUNIT_TEST_FIXTURE(Test, testGroupShapeRotation) // it. CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(1221), nVertPosition); } + +CPPUNIT_TEST_FIXTURE(Test, testDrawShapeInlineEffect) +{ + OUString aURL = m_directories.getURLFromSrc(DATA_DIRECTORY) + "draw-shape-inline-effect.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_Int32 nBottomMargin = 0; + xShape->getPropertyValue("BottomMargin") >>= nBottomMargin; + // 273 in mm100 is 98425 EMUs from the file. + // Without the accompanying fix in place, this test would have failed with: + // - Expected: 273 + // - Actual : 0 + // i.e. the layout result had less pages than expected (compared to Word). + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(273), nBottomMargin); +} } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerfilter/qa/cppunittests/dmapper/data/draw-shape-inline-effect.docx b/writerfilter/qa/cppunittests/dmapper/data/draw-shape-inline-effect.docx new file mode 100644 index 000000000000..3eb5b0e2f448 Binary files /dev/null and b/writerfilter/qa/cppunittests/dmapper/data/draw-shape-inline-effect.docx differ diff --git a/writerfilter/source/dmapper/GraphicImport.cxx b/writerfilter/source/dmapper/GraphicImport.cxx index 560d5c8645cd..e3a88757125a 100644 --- a/writerfilter/source/dmapper/GraphicImport.cxx +++ b/writerfilter/source/dmapper/GraphicImport.cxx @@ -901,6 +901,7 @@ void GraphicImport::lcl_attribute(Id nName, Value& rValue) else if (bUseShape && m_pImpl->eGraphicImportType == IMPORT_AS_DETECTED_INLINE) { uno::Reference< beans::XPropertySet > xShapeProps(m_xShape, uno::UNO_QUERY_THROW); + m_pImpl->applyMargins(xShapeProps); comphelper::SequenceAsHashMap aInteropGrabBag(xShapeProps->getPropertyValue("InteropGrabBag")); aInteropGrabBag.update(m_pImpl->getInteropGrabBag()); xShapeProps->setPropertyValue("InteropGrabBag", uno::makeAny(aInteropGrabBag.getAsConstPropertyValueList())); _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
