diff options
-rw-r--r-- | oox/inc/oox/drawingml/shape.hxx | 1 | ||||
-rw-r--r-- | oox/inc/oox/drawingml/textbody.hxx | 1 | ||||
-rw-r--r-- | oox/source/drawingml/shape.cxx | 5 | ||||
-rw-r--r-- | oox/source/drawingml/textbody.cxx | 15 | ||||
-rw-r--r-- | oox/source/ppt/pptshape.cxx | 2 |
5 files changed, 21 insertions, 3 deletions
diff --git a/oox/inc/oox/drawingml/shape.hxx b/oox/inc/oox/drawingml/shape.hxx index f2553fb0eef4..09ea5028b94e 100644 --- a/oox/inc/oox/drawingml/shape.hxx +++ b/oox/inc/oox/drawingml/shape.hxx @@ -189,6 +189,7 @@ protected: const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes >& rxShapes, const ::com::sun::star::awt::Rectangle* pShapeRect, sal_Bool bClearText, + sal_Bool bDoNotInsertEmptyTextBody, basegfx::B2DHomMatrix& aTransformation ); void addChildren( diff --git a/oox/inc/oox/drawingml/textbody.hxx b/oox/inc/oox/drawingml/textbody.hxx index aa2fdcd71317..7fad554ee9c4 100644 --- a/oox/inc/oox/drawingml/textbody.hxx +++ b/oox/inc/oox/drawingml/textbody.hxx @@ -68,6 +68,7 @@ public: const ::com::sun::star::uno::Reference < ::com::sun::star::text::XTextCursor > & xAt, const TextCharacterProperties& rTextStyleProperties, const TextListStylePtr& pMasterTextListStyle ) const; + bool isEmpty(); protected: TextParagraphVector maParagraphs; TextBodyProperties maTextProperties; diff --git a/oox/source/drawingml/shape.cxx b/oox/source/drawingml/shape.cxx index 9bdb962787a9..be58314124a4 100644 --- a/oox/source/drawingml/shape.cxx +++ b/oox/source/drawingml/shape.cxx @@ -212,7 +212,7 @@ void Shape::addShape( if( !sServiceName.isEmpty() ) { basegfx::B2DHomMatrix aMatrix( aTransformation ); - Reference< XShape > xShape( createAndInsert( rFilterBase, sServiceName, pTheme, rxShapes, pShapeRect, sal_False, aMatrix ) ); + Reference< XShape > xShape( createAndInsert( rFilterBase, sServiceName, pTheme, rxShapes, pShapeRect, sal_False, sal_False, aMatrix ) ); if( pShapeMap && !msId.isEmpty() ) { @@ -327,6 +327,7 @@ Reference< XShape > Shape::createAndInsert( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes >& rxShapes, const awt::Rectangle* /* pShapeRect */, sal_Bool bClearText, + sal_Bool bDoNotInsertEmptyTextBody, basegfx::B2DHomMatrix& aParentTransformation ) { bool bIsEmbMedia = false; @@ -567,7 +568,7 @@ Reference< XShape > Shape::createAndInsert( getTextBody()->getTextProperties().pushVertSimulation(); // in some cases, we don't have any text body. - if( getTextBody() ) + if( getTextBody() && ( !bDoNotInsertEmptyTextBody || !mpTextBody->isEmpty() ) ) { Reference < XText > xText( mxShape, UNO_QUERY ); if ( xText.is() ) // not every shape is supporting an XText interface (e.g. GroupShape) diff --git a/oox/source/drawingml/textbody.cxx b/oox/source/drawingml/textbody.cxx index 43ef01287105..5080f0f867f4 100644 --- a/oox/source/drawingml/textbody.cxx +++ b/oox/source/drawingml/textbody.cxx @@ -77,6 +77,21 @@ void TextBody::insertAt( (*aIt)->insertAt( rFilterBase, xText, xAt, rTextStyleProperties, aCombinedTextStyle, aIt == aBeg ); } +bool TextBody::isEmpty() +{ + if ( maParagraphs.size() <= 0 ) + return true; + if ( maParagraphs.size() > 1 ) + return false; + + const TextRunVector aRuns = maParagraphs[0]->getRuns(); + if ( aRuns.size() <= 0 ) + return true; + if ( aRuns.size() > 1 ) + return false; + + return aRuns[0]->getText().getLength() <= 0; +} } } diff --git a/oox/source/ppt/pptshape.cxx b/oox/source/ppt/pptshape.cxx index d7fba77af322..9fa052c46308 100644 --- a/oox/source/ppt/pptshape.cxx +++ b/oox/source/ppt/pptshape.cxx @@ -338,7 +338,7 @@ void PPTShape::addShape( } else setMasterTextListStyle( aMasterTextListStyle ); - Reference< XShape > xShape( createAndInsert( rFilterBase, sServiceName, pTheme, rxShapes, pShapeRect, bClearText, aTransformation ) ); + Reference< XShape > xShape( createAndInsert( rFilterBase, sServiceName, pTheme, rxShapes, pShapeRect, bClearText, mpPlaceholder.get() != NULL, aTransformation ) ); if ( !rSlidePersist.isMasterPage() && rSlidePersist.getPage().is() && ( (sal_Int32)mnSubType == XML_title ) ) { try |