[Libreoffice-commits] core.git: Branch 'libreoffice-5-2' - sw/qa sw/source writerfilter/source

Tamás Zolnai tamas.zolnai at collabora.com
Sat Nov 5 20:29:29 UTC 2016


 sw/qa/extras/ooxmlexport/data/tdf103573.docx   |binary
 sw/qa/extras/ooxmlexport/ooxmlexport7.cxx      |   19 +++++++++++++++++++
 sw/source/filter/ww8/docxsdrexport.cxx         |    6 ++++--
 writerfilter/source/dmapper/GraphicHelpers.cxx |    8 ++++++--
 4 files changed, 29 insertions(+), 4 deletions(-)

New commits:
commit 18ef4766a97340fb9e0adc4ac7ee4feb90213a64
Author: Tamás Zolnai <tamas.zolnai at collabora.com>
Date:   Sat Nov 5 11:50:18 2016 +0000

    tdf#103753: DOCX: Handle relative positions to left or right margin
    
    Positioning relative to left or right margin in MS Word
    works the same as the positioning relative to left or right
    page border in LO Writer.
    
    Reviewed-on: https://gerrit.libreoffice.org/30376
    Reviewed-by: Tamás Zolnai <tamas.zolnai at collabora.com>
    Tested-by: Tamás Zolnai <tamas.zolnai at collabora.com>
    
    Conflicts:
    	sw/qa/extras/ooxmlexport/ooxmlexport9.cxx
    
    Change-Id: I476a5e9e76f766b7fb7f1c7f4a068af8bb3c8813
    Reviewed-on: https://gerrit.libreoffice.org/30377
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/sw/qa/extras/ooxmlexport/data/tdf103573.docx b/sw/qa/extras/ooxmlexport/data/tdf103573.docx
new file mode 100644
index 0000000..34d7e33
Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/tdf103573.docx differ
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport7.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport7.cxx
index 0e81597..6babd92 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport7.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport7.cxx
@@ -23,6 +23,8 @@
 #include <com/sun/star/style/LineSpacing.hpp>
 #include <com/sun/star/style/LineSpacingMode.hpp>
 #include <com/sun/star/text/GraphicCrop.hpp>
+#include <com/sun/star/text/HoriOrientation.hpp>
+#include <com/sun/star/text/RelOrientation.hpp>
 #include <pagedesc.hxx>
 
 #include <comphelper/sequenceashashmap.hxx>
@@ -1144,6 +1146,23 @@ DECLARE_OOXMLEXPORT_TEST(testTdf95031, "tdf95031.docx")
     CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(0), getProperty<sal_Int32>(getParagraph(3), "ParaTopMargin"));
 }
 
+DECLARE_OOXMLEXPORT_TEST(testTdf103573, "tdf103573.docx")
+{
+    // Relative positions to the left or right margin (MS Word naming) was not handled.
+    uno::Reference<beans::XPropertySet> xShapeProperties( getShape(1), uno::UNO_QUERY );
+    sal_Int16 nValue;
+    xShapeProperties->getPropertyValue("HoriOrient") >>= nValue;
+    CPPUNIT_ASSERT_EQUAL_MESSAGE("Not centered horizontally", text::HoriOrientation::CENTER, nValue);
+    xShapeProperties->getPropertyValue("HoriOrientRelation") >>= nValue;
+    CPPUNIT_ASSERT_EQUAL_MESSAGE("Not centered horizontally relatively to left page border", text::RelOrientation::PAGE_LEFT, nValue);
+
+    xShapeProperties.set( getShape(2), uno::UNO_QUERY );
+    xShapeProperties->getPropertyValue("HoriOrient") >>= nValue;
+    CPPUNIT_ASSERT_EQUAL_MESSAGE("Not centered horizontally", text::HoriOrientation::CENTER, nValue);
+    xShapeProperties->getPropertyValue("HoriOrientRelation") >>= nValue;
+    CPPUNIT_ASSERT_EQUAL_MESSAGE("Not centered horizontally relatively to right page border", text::RelOrientation::PAGE_RIGHT, nValue);
+}
+
 #endif
 
 CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/sw/source/filter/ww8/docxsdrexport.cxx b/sw/source/filter/ww8/docxsdrexport.cxx
index f6d3776..1eecce9 100644
--- a/sw/source/filter/ww8/docxsdrexport.cxx
+++ b/sw/source/filter/ww8/docxsdrexport.cxx
@@ -445,8 +445,10 @@ void DocxSdrExport::startDMLAnchorInline(const SwFrameFormat* pFrameFormat, cons
             relativeFromH = "character";
             break;
         case text::RelOrientation::PAGE_RIGHT:
-            relativeFromH = "page";
-            alignH = "right";
+            relativeFromH = "rightMargin";
+            break;
+        case text::RelOrientation::PAGE_LEFT:
+            relativeFromH = "leftMargin";
             break;
         case text::RelOrientation::FRAME:
         default:
diff --git a/writerfilter/source/dmapper/GraphicHelpers.cxx b/writerfilter/source/dmapper/GraphicHelpers.cxx
index 0dccda7..8c4dd9c 100644
--- a/writerfilter/source/dmapper/GraphicHelpers.cxx
+++ b/writerfilter/source/dmapper/GraphicHelpers.cxx
@@ -94,7 +94,9 @@ void PositionHandler::lcl_attribute( Id aName, Value& rVal )
                     NS_ooxml::LN_Value_wordprocessingDrawing_ST_RelFromH_margin,
                     NS_ooxml::LN_Value_wordprocessingDrawing_ST_RelFromH_page,
                     NS_ooxml::LN_Value_wordprocessingDrawing_ST_RelFromH_column,
-                    NS_ooxml::LN_Value_wordprocessingDrawing_ST_RelFromH_character
+                    NS_ooxml::LN_Value_wordprocessingDrawing_ST_RelFromH_character,
+                    NS_ooxml::LN_Value_wordprocessingDrawing_ST_RelFromH_leftMargin,
+                    NS_ooxml::LN_Value_wordprocessingDrawing_ST_RelFromH_rightMargin
                 };
 
                 static const sal_Int16 pHoriRelations[] =
@@ -103,9 +105,11 @@ void PositionHandler::lcl_attribute( Id aName, Value& rVal )
                     text::RelOrientation::PAGE_FRAME,
                     text::RelOrientation::FRAME,
                     text::RelOrientation::CHAR,
+                    text::RelOrientation::PAGE_LEFT,
+                    text::RelOrientation::PAGE_RIGHT,
                 };
 
-                for ( int i = 0; i < 4; i++ )
+                for ( int i = 0; i < 6; i++ )
                 {
                     if ( pHoriRelValues[i] == sal_uInt32( nIntValue ) )
                         m_nRelation = pHoriRelations[i];


More information about the Libreoffice-commits mailing list