[Libreoffice-commits] core.git: sw/qa writerfilter/source

Michael Stahl mstahl at redhat.com
Wed Jan 24 16:10:24 UTC 2018


 sw/qa/extras/rtfimport/rtfimport.cxx           |   14 ++++++++++++++
 writerfilter/source/rtftok/rtfdispatchflag.cxx |   10 ++++++++--
 2 files changed, 22 insertions(+), 2 deletions(-)

New commits:
commit dc16cc0492ba96007078cc285fee1a8d03f40d55
Author: Michael Stahl <mstahl at redhat.com>
Date:   Wed Jan 24 16:42:34 2018 +0100

    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

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)


More information about the Libreoffice-commits mailing list