summaryrefslogtreecommitdiff
path: root/oox
diff options
context:
space:
mode:
authorZolnai Tamás <tamas.zolnai@collabora.com>2014-06-06 15:57:43 +0200
committerZolnai Tamás <tamas.zolnai@collabora.com>2014-06-06 16:50:04 +0200
commit46d682eec92bb241f4604a4b6ab42a3859cd0d48 (patch)
tree1e691d8f2e96473dc2af3ef95b484d97d53ef5a8 /oox
parent37183595bb3b4d58682f90fd9f6713bedcb852a2 (diff)
bnc#880763: PPTX import: wrong z-order becuause of wrong import order
importExtDrawings() must be called as soon as possible, before parser starts to parse the next shape. Call it when graphicFrame tag is closed. This tag include the reference to the SmartArt. Plus fix up import tests. Change-Id: I9e8d54c2b1afeb78a1122390dc4982d580c152ae
Diffstat (limited to 'oox')
-rw-r--r--oox/source/drawingml/graphicshapecontext.cxx14
-rw-r--r--oox/source/ppt/pptshapegroupcontext.cxx7
2 files changed, 12 insertions, 9 deletions
diff --git a/oox/source/drawingml/graphicshapecontext.cxx b/oox/source/drawingml/graphicshapecontext.cxx
index ebd2028f6ad6..db04d5ce9310 100644
--- a/oox/source/drawingml/graphicshapecontext.cxx
+++ b/oox/source/drawingml/graphicshapecontext.cxx
@@ -36,6 +36,7 @@
#include "oox/drawingml/transform2dcontext.hxx"
#include "oox/helper/binaryinputstream.hxx"
#include "oox/helper/binaryoutputstream.hxx"
+#include "oox/ppt/pptshapegroupcontext.hxx"
#include <comphelper/processfactory.hxx>
using namespace ::com::sun::star;
@@ -103,7 +104,8 @@ ContextHandlerRef GraphicShapeContext::onCreateContext( sal_Int32 aElementToken,
GraphicalObjectFrameContext::GraphicalObjectFrameContext( ContextHandler2Helper& rParent, ShapePtr pMasterShapePtr, ShapePtr pShapePtr, bool bEmbedShapesInChart ) :
ShapeContext( rParent, pMasterShapePtr, pShapePtr ),
- mbEmbedShapesInChart( bEmbedShapesInChart )
+ mbEmbedShapesInChart( bEmbedShapesInChart ),
+ mpParent(&rParent)
{
}
@@ -146,7 +148,15 @@ ContextHandlerRef GraphicalObjectFrameContext::onCreateContext( sal_Int32 aEleme
return ShapeContext::onCreateContext( aElementToken, rAttribs );
}
-
+void GraphicalObjectFrameContext::onEndElement()
+{
+ if( getCurrentElement() == PPT_TOKEN( graphicFrame ) && mpParent )
+ {
+ oox::ppt::PPTShapeGroupContext* pParent = dynamic_cast<oox::ppt::PPTShapeGroupContext*>(mpParent);
+ if( pParent )
+ pParent->importExtDrawings();
+ }
+}
OleObjectGraphicDataContext::OleObjectGraphicDataContext( ContextHandler2Helper& rParent, ShapePtr xShape ) :
ShapeContext( rParent, ShapePtr(), xShape ),
diff --git a/oox/source/ppt/pptshapegroupcontext.cxx b/oox/source/ppt/pptshapegroupcontext.cxx
index 0fd517f0c14c..9bf3d2bd5383 100644
--- a/oox/source/ppt/pptshapegroupcontext.cxx
+++ b/oox/source/ppt/pptshapegroupcontext.cxx
@@ -109,8 +109,6 @@ ContextHandlerRef PPTShapeGroupContext::onCreateContext( sal_Int32 aElementToken
return new PPTGraphicShapeContext( *this, mpSlidePersistPtr, mpGroupShapePtr, oox::drawingml::ShapePtr( new PPTShape( meShapeLocation, "com.sun.star.drawing.GraphicObjectShape" ) ) );
case PPT_TOKEN( graphicFrame ): // CT_GraphicalObjectFrame
{
- if( pGraphicShape )
- importExtDrawings();
pGraphicShape = oox::drawingml::ShapePtr( new PPTShape( meShapeLocation, "com.sun.star.drawing.OLE2Shape" ) );
return new oox::drawingml::GraphicalObjectFrameContext( *this, mpGroupShapePtr, pGraphicShape, true );
}
@@ -150,11 +148,6 @@ void PPTShapeGroupContext::applyFontRefColor(oox::drawingml::ShapePtr pShape, co
}
}
-void PPTShapeGroupContext::onEndElement()
-{
- importExtDrawings();
-}
-
} }
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */