summaryrefslogtreecommitdiff
path: root/oox
diff options
context:
space:
mode:
Diffstat (limited to 'oox')
-rw-r--r--oox/inc/oox/drawingml/shape.hxx1
-rw-r--r--oox/inc/oox/drawingml/textbody.hxx1
-rw-r--r--oox/source/drawingml/shape.cxx5
-rw-r--r--oox/source/drawingml/textbody.cxx15
-rw-r--r--oox/source/ppt/pptshape.cxx2
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