diff options
author | Michael Stahl <mstahl@redhat.com> | 2018-01-24 16:42:34 +0100 |
---|---|---|
committer | Michael Stahl <mstahl@redhat.com> | 2018-01-24 17:07:51 +0100 |
commit | dc16cc0492ba96007078cc285fee1a8d03f40d55 (patch) | |
tree | fa33724308ef4a36e2b8327f645ca2c6712e9159 | |
parent | 31531796bd0f8ab3ef73cc7b5baf323df0ce4aeb (diff) |
tdf#115153 writerfilter: RTF import: fix vert orient of Word 6 shapes
The bugdoc is affected by the change of default vertical alignment;
apparently it's not even possible to set the vertical alignment of a
Word 6 drawing object (\do) so we have to set the Word default.
(regression from c79467ba954987f1d239c594c1e1b3af3f5515f6)
Change-Id: I4084a7a7e2a55f864cb569e04632e034d59eefdb
-rw-r--r-- | sw/qa/extras/rtfimport/rtfimport.cxx | 14 | ||||
-rw-r--r-- | writerfilter/source/rtftok/rtfdispatchflag.cxx | 10 |
2 files changed, 22 insertions, 2 deletions
diff --git a/sw/qa/extras/rtfimport/rtfimport.cxx b/sw/qa/extras/rtfimport/rtfimport.cxx index f47a4b0f903b..87824294180d 100644 --- a/sw/qa/extras/rtfimport/rtfimport.cxx +++ b/sw/qa/extras/rtfimport/rtfimport.cxx @@ -699,6 +699,20 @@ DECLARE_RTFIMPORT_TEST(testGroupshapeRotation, "groupshape-rotation.rtf") CPPUNIT_ASSERT_EQUAL(sal_Int32(315 * 100), getProperty<sal_Int32>(getShape(1), "RotateAngle")); } +DECLARE_RTFIMPORT_TEST(testTdf115153, "tdf115153.rtf") +{ + auto const xShape(getShape(1)); + CPPUNIT_ASSERT_EQUAL(text::HoriOrientation::NONE, getProperty<sal_Int16>(xShape, "HoriOrient")); + CPPUNIT_ASSERT_EQUAL(text::RelOrientation::PAGE_FRAME, + getProperty<sal_Int16>(xShape, "HoriOrientRelation")); + CPPUNIT_ASSERT_EQUAL(sal_Int32(2533), getProperty<sal_Int32>(xShape, "HoriOrientPosition")); + // VertOrient was wrong + CPPUNIT_ASSERT_EQUAL(text::VertOrientation::NONE, getProperty<sal_Int16>(xShape, "VertOrient")); + CPPUNIT_ASSERT_EQUAL(text::RelOrientation::PAGE_FRAME, + getProperty<sal_Int16>(xShape, "VertOrientRelation")); + CPPUNIT_ASSERT_EQUAL(sal_Int32(2131), getProperty<sal_Int32>(xShape, "VertOrientPosition")); +} + DECLARE_RTFIMPORT_TEST(testFdo68291, "fdo68291.odt") { uno::Reference<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY); diff --git a/writerfilter/source/rtftok/rtfdispatchflag.cxx b/writerfilter/source/rtftok/rtfdispatchflag.cxx index 38c5f0e5a2a3..a50165506f81 100644 --- a/writerfilter/source/rtftok/rtfdispatchflag.cxx +++ b/writerfilter/source/rtftok/rtfdispatchflag.cxx @@ -12,6 +12,7 @@ #include <com/sun/star/drawing/XDrawPageSupplier.hpp> #include <com/sun/star/drawing/XEnhancedCustomShapeDefaulter.hpp> #include <com/sun/star/text/RelOrientation.hpp> +#include <com/sun/star/text/VertOrientation.hpp> #include <filter/msfilter/escherex.hxx> @@ -965,12 +966,19 @@ RTFError RTFDocumentImpl::dispatchFlag(RTFKeyword nKeyword) getModelFactory()->createInstance("com.sun.star.drawing.CustomShape"), uno::UNO_QUERY); uno::Reference<drawing::XDrawPageSupplier> xDrawSupplier(m_xDstDoc, uno::UNO_QUERY); + m_aStates.top().aDrawingObject.xPropertySet.set(m_aStates.top().aDrawingObject.xShape, + uno::UNO_QUERY); if (xDrawSupplier.is()) { uno::Reference<drawing::XShapes> xShapes(xDrawSupplier->getDrawPage(), uno::UNO_QUERY); if (xShapes.is() && nKeyword != RTF_DPTXBX) + { + // set default VertOrient before inserting + m_aStates.top().aDrawingObject.xPropertySet->setPropertyValue( + "VertOrient", uno::makeAny(text::VertOrientation::NONE)); xShapes->add(m_aStates.top().aDrawingObject.xShape); + } } if (nType) { @@ -978,8 +986,6 @@ RTFError RTFDocumentImpl::dispatchFlag(RTFKeyword nKeyword) m_aStates.top().aDrawingObject.xShape, uno::UNO_QUERY); xDefaulter->createCustomShapeDefaults(OUString::number(nType)); } - m_aStates.top().aDrawingObject.xPropertySet.set(m_aStates.top().aDrawingObject.xShape, - uno::UNO_QUERY); std::vector<beans::PropertyValue>& rPendingProperties = m_aStates.top().aDrawingObject.aPendingProperties; for (auto& rPendingProperty : rPendingProperties) |