diff options
author | Cédric Bosdonnat <cedric.bosdonnat@free.fr> | 2013-04-29 15:41:37 +0200 |
---|---|---|
committer | Cédric Bosdonnat <cedric.bosdonnat@free.fr> | 2013-04-30 09:34:28 +0200 |
commit | b399c1a38cf7217bf530af3a78e8472d97890ac8 (patch) | |
tree | f0141f4a134d19fc0c693c0855024785c65608f8 /oox/source/vml | |
parent | e7ecf663883478e0705e83e0a63b4abe6757b01d (diff) |
n#592908: docx import, fixed handling of w10:wrap
commit f837c4288cdae4921b3fb6747ba2e2cd5ce2dcd2 moved the handling of
w10:wrap tag in oox, but thus no wrapping was imported any more.
The fix consists in letting the w10:wrap element be handled by writerfilter's
dmapper if the shape has already been retrieved from oox (which is the
case for textboxes). In other cases, make sure that we don't set the
Surround property once again in writerfilter as that would override what
has been done in oox.
(cherry picked from commit 51d5e90b7c09cb980bc72a2c6b1a65303ef15ea2)
Conflicts:
oox/inc/oox/vml/vmlshape.hxx
sw/qa/extras/ooxmlimport/ooxmlimport.cxx
Change-Id: I8ab158641afcf6b9945c52238e7f5adb9e8b3adf
Diffstat (limited to 'oox/source/vml')
-rw-r--r-- | oox/source/vml/vmlshape.cxx | 20 | ||||
-rw-r--r-- | oox/source/vml/vmlshapecontext.cxx | 2 |
2 files changed, 22 insertions, 0 deletions
diff --git a/oox/source/vml/vmlshape.cxx b/oox/source/vml/vmlshape.cxx index 3239151aa0f0..0af325d52233 100644 --- a/oox/source/vml/vmlshape.cxx +++ b/oox/source/vml/vmlshape.cxx @@ -36,6 +36,7 @@ #include <com/sun/star/text/RelOrientation.hpp> #include <com/sun/star/text/SizeType.hpp> #include <com/sun/star/text/VertOrientation.hpp> +#include <com/sun/star/text/WrapTextMode.hpp> #include <com/sun/star/text/XTextContent.hpp> #include <com/sun/star/text/XTextDocument.hpp> #include <com/sun/star/text/XTextFrame.hpp> @@ -405,6 +406,24 @@ SimpleShape::SimpleShape( Drawing& rDrawing, const OUString& rService ) : { } +void lcl_setSurround(PropertySet& rPropSet, const ShapeTypeModel& rTypeModel) +{ + sal_Int32 nSurround = com::sun::star::text::WrapTextMode_THROUGHT; + if ( rTypeModel.moWrapType.get() == "square" || rTypeModel.moWrapType .get()== "tight" || + rTypeModel.moWrapType.get() == "through" ) + { + nSurround = com::sun::star::text::WrapTextMode_PARALLEL; + if ( rTypeModel.moWrapSide.get() == "left" ) + nSurround = com::sun::star::text::WrapTextMode_LEFT; + else if ( rTypeModel.moWrapSide.get() == "right" ) + nSurround = com::sun::star::text::WrapTextMode_RIGHT; + } + else if ( rTypeModel.moWrapType.get() == "topAndBottom" ) + nSurround = com::sun::star::text::WrapTextMode_NONE; + + rPropSet.setProperty(PROP_Surround, nSurround); +} + void lcl_SetAnchorType(PropertySet& rPropSet, const ShapeTypeModel& rTypeModel) { if ( rTypeModel.maPositionHorizontal == "center" ) @@ -449,6 +468,7 @@ void lcl_SetAnchorType(PropertySet& rPropSet, const ShapeTypeModel& rTypeModel) { rPropSet.setProperty(PROP_AnchorType, text::TextContentAnchorType_AS_CHARACTER); } + lcl_setSurround( rPropSet, rTypeModel ); } Reference< XShape > SimpleShape::implConvertAndInsert( const Reference< XShapes >& rxShapes, const awt::Rectangle& rShapeRect ) const diff --git a/oox/source/vml/vmlshapecontext.cxx b/oox/source/vml/vmlshapecontext.cxx index c5edd00e65ac..e0f8cfb659a7 100644 --- a/oox/source/vml/vmlshapecontext.cxx +++ b/oox/source/vml/vmlshapecontext.cxx @@ -360,6 +360,8 @@ ContextHandlerRef ShapeTypeContext::onCreateContext( sal_Int32 nElement, const A case NMSP_vmlWord | XML_wrap: mrTypeModel.moWrapAnchorX = rAttribs.getString(XML_anchorx); mrTypeModel.moWrapAnchorY = rAttribs.getString(XML_anchory); + mrTypeModel.moWrapType = rAttribs.getString(XML_type); + mrTypeModel.moWrapSide = rAttribs.getString(XML_side); break; case VML_TOKEN( shadow ): { |