sw/qa/extras/ooxmlimport/data/tdf90153.docx |binary sw/qa/extras/ooxmlimport/ooxmlimport.cxx | 6 ++++++ writerfilter/source/dmapper/GraphicImport.cxx | 8 ++++++-- 3 files changed, 12 insertions(+), 2 deletions(-)
New commits: commit f98d09c8325c642f0463f2e65ff57be0498e9c23 Author: Miklos Vajna <vmik...@collabora.co.uk> Date: Mon Sep 28 09:03:13 2015 +0200 tdf#90153 DOCX import: fix default sw TextFrame roundtrip The AnchorType of the shape was at-paragraph, which does not allow line-level VertOrientRelation (which is correct, it would be undefined, what line of the paragraph should be the used). Fix this by changing the AnchorType to at-character in the line-level case, which brings the filter in sync with the DOC one. With this, import of a DOCX file that was created by inserting a TextFrame into an empty document is roundtripped without shifting the shape up considerably. (cherry-picked from commit 358666e4204364ce915ee95372dc6f2fca545253) Conflicts: sw/qa/extras/ooxmlimport/ooxmlimport.cxx Change-Id: I6d85c38be859d6e730584f2349c857b87496a1d4 Reviewed-on: https://gerrit.libreoffice.org/19099 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Caolán McNamara <caol...@redhat.com> Tested-by: Caolán McNamara <caol...@redhat.com> diff --git a/sw/qa/extras/ooxmlimport/data/tdf90153.docx b/sw/qa/extras/ooxmlimport/data/tdf90153.docx new file mode 100644 index 0000000..decbfa2 Binary files /dev/null and b/sw/qa/extras/ooxmlimport/data/tdf90153.docx differ diff --git a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx index b00b532..dc460b5 100644 --- a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx +++ b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx @@ -2795,6 +2795,12 @@ DECLARE_OOXMLIMPORT_TEST(testTdf92124, "tdf92124.docx") CPPUNIT_ASSERT(aSuffix.isEmpty()); } +DECLARE_OOXMLIMPORT_TEST(testTdf90153, "tdf90153.docx") +{ + // This was at-para, so the line-level VertOrientRelation was lost, resulting in an incorrect vertical position. + CPPUNIT_ASSERT_EQUAL(text::TextContentAnchorType_AT_CHARACTER, getProperty<text::TextContentAnchorType>(getShape(1), "AnchorType")); +} + #endif CPPUNIT_PLUGIN_IMPLEMENT(); diff --git a/writerfilter/source/dmapper/GraphicImport.cxx b/writerfilter/source/dmapper/GraphicImport.cxx index 154b9e2..1b0644d 100644 --- a/writerfilter/source/dmapper/GraphicImport.cxx +++ b/writerfilter/source/dmapper/GraphicImport.cxx @@ -823,8 +823,12 @@ void GraphicImport::lcl_attribute(Id nName, Value& rValue) // If we are here, this is a drawingML shape. For those, only dmapper (and not oox) knows the anchoring infos (just like for Writer pictures). // But they aren't Writer pictures, either (which are already handled above). uno::Reference< beans::XPropertySet > xShapeProps(m_xShape, uno::UNO_QUERY_THROW); - // This needs to be AT_PARAGRAPH and not AT_CHARACTER, otherwise shape will move when the user inserts a new paragraph. - xShapeProps->setPropertyValue("AnchorType", uno::makeAny(text::TextContentAnchorType_AT_PARAGRAPH)); + + // This needs to be AT_PARAGRAPH by default and not AT_CHARACTER, otherwise shape will move when the user inserts a new paragraph. + text::TextContentAnchorType eAnchorType = text::TextContentAnchorType_AT_PARAGRAPH; + if (m_pImpl->nVertRelation == text::RelOrientation::TEXT_LINE) + eAnchorType = text::TextContentAnchorType_AT_CHARACTER; + xShapeProps->setPropertyValue("AnchorType", uno::makeAny(eAnchorType)); //only the position orientation is handled in applyPosition() m_pImpl->applyPosition(xShapeProps);
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits