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