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.zol...@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.zol...@collabora.com>
    Tested-by: Tamás Zolnai <tamas.zol...@collabora.com>
    
    Conflicts:
        sw/qa/extras/ooxmlexport/ooxmlexport9.cxx
    
    Change-Id: I476a5e9e76f766b7fb7f1c7f4a068af8bb3c8813
    Reviewed-on: https://gerrit.libreoffice.org/30377
    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/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];
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to