tdf#158773 avoid some OUString construction

Change-Id: I42c6b7a8c7b0c0af17a2806c908f5a336ef206d8
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164599
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
diff --git a/include/oox/drawingml/shape.hxx b/include/oox/drawingml/shape.hxx
index b5dad22..455e3f6 100644
--- a/include/oox/drawingml/shape.hxx
+++ b/include/oox/drawingml/shape.hxx
@@ -110,14 +110,15 @@ class OOX_DLLPUBLIC Shape
{
public:

    explicit Shape( const char* pServiceType = nullptr, bool bDefaultHeight = true );
    Shape();
    explicit Shape( const OUString& rServiceType, bool bDefaultHeight = true );
    explicit Shape( const ShapePtr& pSourceShape );
    Shape(Shape const &) = default;
    virtual ~Shape();
    Shape & operator =(Shape const &) = default;

    OUString&                  getServiceName(){ return msServiceName; }
    void                            setServiceName( const char* pServiceName );
    const OUString&            getServiceName() const { return msServiceName; }
    void                       setServiceName( const OUString& rServiceName ) { msServiceName = rServiceName; }

    const OUString& getDiagramDataModelID() const { return msDiagramDataModelID; }
    void setDiagramDataModelID( const OUString& rDiagramDataModelID ) { msDiagramDataModelID = rDiagramDataModelID; }
diff --git a/include/oox/ppt/pptshape.hxx b/include/oox/ppt/pptshape.hxx
index eb77b66..02c60a6 100644
--- a/include/oox/ppt/pptshape.hxx
+++ b/include/oox/ppt/pptshape.hxx
@@ -58,7 +58,7 @@ class PPTShape final : public oox::drawingml::Shape
public:

    PPTShape( const oox::ppt::ShapeLocation eShapeLocation,
                const char* pServiceType );
                const OUString& rServiceType );
    virtual ~PPTShape() override;

    using oox::drawingml::Shape::addShape;
diff --git a/oox/source/drawingml/shape.cxx b/oox/source/drawingml/shape.cxx
index eb43f0e..99a8e72 100644
--- a/oox/source/drawingml/shape.cxx
+++ b/oox/source/drawingml/shape.cxx
@@ -126,7 +126,7 @@ using namespace ::com::sun::star::style;

namespace oox::drawingml {

Shape::Shape( const char* pServiceName, bool bDefaultHeight )
Shape::Shape()
: mpLinePropertiesPtr( std::make_shared<LineProperties>() )
, mpShapeRefLinePropPtr( std::make_shared<LineProperties>() )
, mpFillPropertiesPtr( std::make_shared<FillProperties>() )
@@ -155,8 +155,40 @@ Shape::Shape( const char* pServiceName, bool bDefaultHeight )
, maDiagramDoms( 0 )
, mpDiagramHelper( nullptr )
{
    if ( pServiceName )
        msServiceName = OUString::createFromAscii( pServiceName );
    setDefaults(/*bDefaultHeight*/true);
}


Shape::Shape( const OUString& rServiceName, bool bDefaultHeight )
: mpLinePropertiesPtr( std::make_shared<LineProperties>() )
, mpShapeRefLinePropPtr( std::make_shared<LineProperties>() )
, mpFillPropertiesPtr( std::make_shared<FillProperties>() )
, mpShapeRefFillPropPtr( std::make_shared<FillProperties>() )
, mpGraphicPropertiesPtr( std::make_shared<GraphicProperties>() )
, mpCustomShapePropertiesPtr( std::make_shared<CustomShapeProperties>() )
, mp3DPropertiesPtr( std::make_shared<Shape3DProperties>() )
, mpEffectPropertiesPtr( std::make_shared<EffectProperties>() )
, mpShapeRefEffectPropPtr( std::make_shared<EffectProperties>() )
, mpMasterTextListStyle( std::make_shared<TextListStyle>() )
, mnSubType( 0 )
, meFrameType( FRAMETYPE_GENERIC )
, mnRotation( 0 )
, mnDiagramRotation( 0 )
, mbFlipH( false )
, mbFlipV( false )
, mbHidden( false )
, mbHiddenMasterShape( false )
, mbLocked( false )
, mbWPGChild(false)
, mbLockedCanvas( false )
, mbWordprocessingCanvas(false)
, mbWps( false )
, mbTextBox( false )
, mbHasLinkedTxbx( false )
, maDiagramDoms( 0 )
, mpDiagramHelper( nullptr )
{
    msServiceName = rServiceName;
    setDefaults(bDefaultHeight);
}

@@ -313,9 +345,9 @@ ChartShapeInfo& Shape::setChartType( bool bEmbedShapes )
    OSL_ENSURE( meFrameType == FRAMETYPE_GENERIC, "Shape::setChartType - multiple frame types" );
    meFrameType = FRAMETYPE_CHART;
    if (mbWps)
        msServiceName = "com.sun.star.drawing.temporaryForXMLImportOLE2Shape";
        msServiceName = u"com.sun.star.drawing.temporaryForXMLImportOLE2Shape"_ustr;
    else
        msServiceName = "com.sun.star.drawing.OLE2Shape";
        msServiceName = u"com.sun.star.drawing.OLE2Shape"_ustr;
    mxChartShapeInfo = std::make_shared<ChartShapeInfo>( bEmbedShapes );
    return *mxChartShapeInfo;
}
@@ -324,7 +356,7 @@ void Shape::setDiagramType()
{
    OSL_ENSURE( meFrameType == FRAMETYPE_GENERIC, "Shape::setDiagramType - multiple frame types" );
    meFrameType = FRAMETYPE_DIAGRAM;
    msServiceName = "com.sun.star.drawing.GroupShape";
    msServiceName = u"com.sun.star.drawing.GroupShape"_ustr;
    mnSubType = 0;
}

@@ -332,16 +364,10 @@ void Shape::setTableType()
{
    OSL_ENSURE( meFrameType == FRAMETYPE_GENERIC, "Shape::setTableType - multiple frame types" );
    meFrameType = FRAMETYPE_TABLE;
    msServiceName = "com.sun.star.drawing.TableShape";
    msServiceName = u"com.sun.star.drawing.TableShape"_ustr;
    mnSubType = 0;
}

void Shape::setServiceName( const char* pServiceName )
{
    if ( pServiceName )
        msServiceName = OUString::createFromAscii( pServiceName );
}

const ShapeStyleRef* Shape::getShapeStyleRef( sal_Int32 nRefType ) const
{
    ShapeStyleRefMap::const_iterator aIt = maShapeStyleRefs.find( nRefType );
@@ -926,7 +952,7 @@ Reference< XShape > const & Shape::createAndInsert(
    if (pMathXml)
    {
        // convert this shape to OLE
        aServiceName = "com.sun.star.drawing.OLE2Shape";
        aServiceName = u"com.sun.star.drawing.OLE2Shape"_ustr;
        msServiceName = aServiceName;
        meFrameType = FRAMETYPE_GENERIC; // not OLEOBJECT, no stream in package
        mnSubType = 0;
diff --git a/oox/source/drawingml/shapepropertiescontext.cxx b/oox/source/drawingml/shapepropertiescontext.cxx
index a637f01..228d703 100644
--- a/oox/source/drawingml/shapepropertiescontext.cxx
+++ b/oox/source/drawingml/shapepropertiescontext.cxx
@@ -64,7 +64,7 @@ ContextHandlerRef ShapePropertiesContext::onCreateContext( sal_Int32 aElementTok
            // TODO: Move the following checks to a separate place or as a separate function
            if (nToken == XML_line && !mrShape.isConnectorShape())
            {
                mrShape.getServiceName() = "com.sun.star.drawing.LineShape";
                mrShape.setServiceName(u"com.sun.star.drawing.LineShape"_ustr);
            }

            // We got a preset geometry, forget the geometry inherited from the placeholder shape.
diff --git a/oox/source/ppt/pptshape.cxx b/oox/source/ppt/pptshape.cxx
index 733aa2a..5d0152f 100644
--- a/oox/source/ppt/pptshape.cxx
+++ b/oox/source/ppt/pptshape.cxx
@@ -58,8 +58,8 @@ using namespace ::com::sun::star::presentation;

namespace oox::ppt {

PPTShape::PPTShape( const oox::ppt::ShapeLocation eShapeLocation, const char* pServiceName )
: Shape( pServiceName )
PPTShape::PPTShape( const oox::ppt::ShapeLocation eShapeLocation, const OUString& rServiceName )
: Shape( rServiceName )
, meShapeLocation( eShapeLocation )
, mbReferenced( false )
, mbHasNoninheritedShapeProperties( false )
diff --git a/oox/source/ppt/pptshapegroupcontext.cxx b/oox/source/ppt/pptshapegroupcontext.cxx
index 49a5f5c..b29aa95 100644
--- a/oox/source/ppt/pptshapegroupcontext.cxx
+++ b/oox/source/ppt/pptshapegroupcontext.cxx
@@ -100,15 +100,15 @@ ContextHandlerRef PPTShapeGroupContext::onCreateContext( sal_Int32 aElementToken
*/
    case PPT_TOKEN( cxnSp ):        // connector shape
    {
        auto pShape = std::make_shared<PPTShape>(meShapeLocation, "com.sun.star.drawing.ConnectorShape");
        auto pShape = std::make_shared<PPTShape>(meShapeLocation, u"com.sun.star.drawing.ConnectorShape"_ustr);
        return new oox::drawingml::ConnectorShapeContext(*this, mpGroupShapePtr, pShape,
                                                         pShape->getConnectorShapeProperties());
    }
    case PPT_TOKEN( grpSp ):        // group shape
        return new PPTShapeGroupContext( *this, mpSlidePersistPtr, meShapeLocation, mpGroupShapePtr, std::make_shared<PPTShape>( meShapeLocation, "com.sun.star.drawing.GroupShape" ) );
        return new PPTShapeGroupContext( *this, mpSlidePersistPtr, meShapeLocation, mpGroupShapePtr, std::make_shared<PPTShape>( meShapeLocation, u"com.sun.star.drawing.GroupShape"_ustr ) );
    case PPT_TOKEN( sp ):           // Shape
        {
            auto pShape = std::make_shared<PPTShape>( meShapeLocation, "com.sun.star.drawing.CustomShape" );
            auto pShape = std::make_shared<PPTShape>( meShapeLocation, u"com.sun.star.drawing.CustomShape"_ustr );
            bool bUseBgFill = rAttribs.getBool(XML_useBgFill, false);
            if (bUseBgFill)
            {
@@ -119,10 +119,10 @@ ContextHandlerRef PPTShapeGroupContext::onCreateContext( sal_Int32 aElementToken
            return new PPTShapeContext( *this, mpSlidePersistPtr, mpGroupShapePtr, pShape );
        }
    case PPT_TOKEN( pic ):          // CT_Picture
        return new PPTGraphicShapeContext( *this, mpSlidePersistPtr, mpGroupShapePtr,  std::make_shared<PPTShape>( meShapeLocation, "com.sun.star.drawing.GraphicObjectShape" ) );
        return new PPTGraphicShapeContext( *this, mpSlidePersistPtr, mpGroupShapePtr,  std::make_shared<PPTShape>( meShapeLocation, u"com.sun.star.drawing.GraphicObjectShape"_ustr ) );
    case PPT_TOKEN( graphicFrame ): // CT_GraphicalObjectFrame
        {
            pGraphicShape = std::make_shared<PPTShape>( meShapeLocation, "com.sun.star.drawing.OLE2Shape" );
            pGraphicShape = std::make_shared<PPTShape>( meShapeLocation, u"com.sun.star.drawing.OLE2Shape"_ustr );
            return new oox::drawingml::GraphicalObjectFrameContext( *this, mpGroupShapePtr, pGraphicShape, true );
        }
    }
diff --git a/oox/source/ppt/presentationfragmenthandler.cxx b/oox/source/ppt/presentationfragmenthandler.cxx
index 2e0f48b..955f4e2 100644
--- a/oox/source/ppt/presentationfragmenthandler.cxx
+++ b/oox/source/ppt/presentationfragmenthandler.cxx
@@ -246,7 +246,7 @@ void PresentationFragmentHandler::importMasterSlide(const Reference<frame::XMode
        }

        pMasterPersistPtr = std::make_shared<SlidePersist>( rFilter, true, false, xMasterPage,
                                                            std::make_shared<PPTShape>( Master, "com.sun.star.drawing.GroupShape" ), mpTextListStyle );
                                                            std::make_shared<PPTShape>( Master, u"com.sun.star.drawing.GroupShape"_ustr ), mpTextListStyle );
        pMasterPersistPtr->setLayoutPath( aLayoutFragmentPath );
        rFilter.getMasterPages().push_back( pMasterPersistPtr );
        rFilter.setActualSlidePersist( pMasterPersistPtr );
@@ -404,7 +404,7 @@ void PresentationFragmentHandler::importSlide(sal_uInt32 nSlide, bool bFirstPage
        {
            SlidePersistPtr pMasterPersistPtr;
            SlidePersistPtr pSlidePersistPtr = std::make_shared<SlidePersist>( rFilter, false, false, xSlide,
                                std::make_shared<PPTShape>( Slide, "com.sun.star.drawing.GroupShape" ), mpTextListStyle );
                                std::make_shared<PPTShape>( Slide, u"com.sun.star.drawing.GroupShape"_ustr ), mpTextListStyle );

            FragmentHandlerRef xSlideFragmentHandler( new SlideFragmentHandler( rFilter, aSlideFragmentPath, pSlidePersistPtr, Slide ) );

@@ -458,7 +458,7 @@ void PresentationFragmentHandler::importSlide(sal_uInt32 nSlide, bool bFirstPage
                        if ( xNotesPage.is() )
                        {
                            SlidePersistPtr pNotesPersistPtr = std::make_shared<SlidePersist>( rFilter, false, true, xNotesPage,
                                std::make_shared<PPTShape>( Slide, "com.sun.star.drawing.GroupShape" ), mpTextListStyle );
                                std::make_shared<PPTShape>( Slide, u"com.sun.star.drawing.GroupShape"_ustr ), mpTextListStyle );
                            FragmentHandlerRef xNotesFragmentHandler( new SlideFragmentHandler( getFilter(), aNotesFragmentPath, pNotesPersistPtr, Slide ) );
                            rFilter.getNotesPages().push_back( pNotesPersistPtr );
                            rFilter.setActualSlidePersist( pNotesPersistPtr );
@@ -479,7 +479,7 @@ void PresentationFragmentHandler::importSlide(sal_uInt32 nSlide, bool bFirstPage
                SlidePersistPtr pCommentAuthorsPersistPtr =
                    std::make_shared<SlidePersist>( rFilter, false, true, xCommentAuthorsPage,
                                      std::make_shared<PPTShape>(
                                              Slide, "com.sun.star.drawing.GroupShape" ),
                                              Slide, u"com.sun.star.drawing.GroupShape"_ustr ),
                                      mpTextListStyle );
                FragmentHandlerRef xCommentAuthorsFragmentHandler(
                    new SlideFragmentHandler( getFilter(),
@@ -498,7 +498,7 @@ void PresentationFragmentHandler::importSlide(sal_uInt32 nSlide, bool bFirstPage
                    std::make_shared<SlidePersist>(
                        rFilter, false, true, xCommentsPage,
                        std::make_shared<PPTShape>(
                                Slide, "com.sun.star.drawing.GroupShape" ),
                                Slide, u"com.sun.star.drawing.GroupShape"_ustr ),
                        mpTextListStyle );

                FragmentHandlerRef xCommentsFragmentHandler(
diff --git a/oox/source/ppt/slidefragmenthandler.cxx b/oox/source/ppt/slidefragmenthandler.cxx
index 87fc980..491b7c9 100644
--- a/oox/source/ppt/slidefragmenthandler.cxx
+++ b/oox/source/ppt/slidefragmenthandler.cxx
@@ -112,7 +112,7 @@ SlideFragmentHandler::~SlideFragmentHandler()
        if( !bNotesFragmentPathFound && !mpSlidePersistPtr->getMasterPersist() )
        {
            SlidePersistPtr pMasterPersistPtr = std::make_shared<SlidePersist>( rFilter, true, true, mpSlidePersistPtr->getPage(),
                                std::make_shared<PPTShape>( Master, "com.sun.star.drawing.GroupShape" ), mpSlidePersistPtr->getNotesTextStyle() );
                                std::make_shared<PPTShape>( Master, u"com.sun.star.drawing.GroupShape"_ustr ), mpSlidePersistPtr->getNotesTextStyle() );
            pMasterPersistPtr->setPath( aNotesFragmentPath );
            rFilter.getMasterPages().push_back( pMasterPersistPtr );
            FragmentHandlerRef xMasterFragmentHandler( new SlideFragmentHandler( rFilter, aNotesFragmentPath, pMasterPersistPtr, Master ) );
@@ -131,7 +131,7 @@ SlideFragmentHandler::~SlideFragmentHandler()
        {
            return new PPTShapeGroupContext(
                *this, mpSlidePersistPtr, meShapeLocation, mpSlidePersistPtr->getShapes(),
                std::make_shared<PPTShape>( meShapeLocation, "com.sun.star.drawing.GroupShape" ) );
                std::make_shared<PPTShape>( meShapeLocation, u"com.sun.star.drawing.GroupShape"_ustr ) );
        }
        break;

diff --git a/oox/source/shape/LockedCanvasContext.cxx b/oox/source/shape/LockedCanvasContext.cxx
index ab74515..31f04a9 100644
--- a/oox/source/shape/LockedCanvasContext.cxx
+++ b/oox/source/shape/LockedCanvasContext.cxx
@@ -26,7 +26,7 @@ namespace oox::shape
LockedCanvasContext::LockedCanvasContext(FragmentHandler2 const& rParent)
    : FragmentHandler2(rParent)
{
    mpShapePtr = std::make_shared<oox::drawingml::Shape>("com.sun.star.drawing.GroupShape");
    mpShapePtr = std::make_shared<oox::drawingml::Shape>(u"com.sun.star.drawing.GroupShape"_ustr);
    mpShapePtr->setLockedCanvas(true); // will be "LockedCanvas" in InteropGrabBag
}

@@ -47,12 +47,13 @@ LockedCanvasContext::onCreateContext(sal_Int32 nElementToken, const ::oox::Attri
        {
            return new oox::drawingml::ShapeContext(
                *this, mpShapePtr,
                std::make_shared<oox::drawingml::Shape>("com.sun.star.drawing.CustomShape", true));
                std::make_shared<oox::drawingml::Shape>(u"com.sun.star.drawing.CustomShape"_ustr,
                                                        true));
        }
        case XML_cxnSp: // CT_GvmlConnector
        {
            oox::drawingml::ShapePtr pShape
                = std::make_shared<oox::drawingml::Shape>("com.sun.star.drawing.ConnectorShape");
            oox::drawingml::ShapePtr pShape = std::make_shared<oox::drawingml::Shape>(
                u"com.sun.star.drawing.ConnectorShape"_ustr);
            return new oox::drawingml::ConnectorShapeContext(*this, mpShapePtr, pShape,
                                                             pShape->getConnectorShapeProperties());
        }
@@ -60,20 +61,22 @@ LockedCanvasContext::onCreateContext(sal_Int32 nElementToken, const ::oox::Attri
        {
            return new oox::drawingml::GraphicShapeContext(
                *this, mpShapePtr,
                std::make_shared<oox::drawingml::Shape>("com.sun.star.drawing.GraphicObjectShape"));
                std::make_shared<oox::drawingml::Shape>(
                    u"com.sun.star.drawing.GraphicObjectShape"_ustr));
        }
        case XML_graphicFrame: // CT_GvmlGraphicObjectFrame
        {
            return new oox::drawingml::GraphicalObjectFrameContext(
                *this, mpShapePtr,
                std::make_shared<oox::drawingml::Shape>("com.sun.star.drawing.GraphicObjectShape"),
                std::make_shared<oox::drawingml::Shape>(
                    u"com.sun.star.drawing.GraphicObjectShape"_ustr),
                true);
        }
        case XML_grpSp: // CT_GvmlGroupShape
        {
            return new oox::drawingml::ShapeGroupContext(
                *this, mpShapePtr,
                std::make_shared<oox::drawingml::Shape>("com.sun.star.drawing.GroupShape"));
                std::make_shared<oox::drawingml::Shape>(u"com.sun.star.drawing.GroupShape"_ustr));
        }
        // mandatory child elements of CT_GvmlGroupShapeNonVisual
        case XML_cNvPr: // CT_NonVisualDrawingProps
diff --git a/oox/source/shape/WordprocessingCanvasContext.cxx b/oox/source/shape/WordprocessingCanvasContext.cxx
index 9365e38..b038864 100644
--- a/oox/source/shape/WordprocessingCanvasContext.cxx
+++ b/oox/source/shape/WordprocessingCanvasContext.cxx
@@ -36,12 +36,12 @@ WordprocessingCanvasContext::WordprocessingCanvasContext(FragmentHandler2 const&
    : FragmentHandler2(rParent)
    , m_bFullWPGSupport(true)
{
    mpShapePtr = std::make_shared<oox::drawingml::Shape>("com.sun.star.drawing.GroupShape");
    mpShapePtr = std::make_shared<oox::drawingml::Shape>(u"com.sun.star.drawing.GroupShape"_ustr);
    mpShapePtr->setSize(rSize);
    mpShapePtr->setWordprocessingCanvas(true); // will be "WordprocessingCanvas" in InteropGrabBag
    mpShapePtr->setWps(true);
    oox::drawingml::ShapePtr pBackground
        = std::make_shared<oox::drawingml::Shape>("com.sun.star.drawing.CustomShape");
        = std::make_shared<oox::drawingml::Shape>(u"com.sun.star.drawing.CustomShape"_ustr);
    pBackground->getCustomShapeProperties()->setShapePresetType(XML_rect);
    pBackground->setSize(rSize);
    pBackground->setWordprocessingCanvas(true);
@@ -73,14 +73,15 @@ WordprocessingCanvasContext::onCreateContext(sal_Int32 nElementToken,
        case XML_wsp: // CT_WordprocessingShape
        {
            oox::drawingml::ShapePtr pShape = std::make_shared<oox::drawingml::Shape>(
                "com.sun.star.drawing.CustomShape", /*bDefaultHeight=*/false);
                u"com.sun.star.drawing.CustomShape"_ustr, /*bDefaultHeight=*/false);
            return new oox::shape::WpsContext(*this, uno::Reference<drawing::XShape>(), mpShapePtr,
                                              pShape);
        }
        case XML_pic: // CT_Picture
            return new oox::drawingml::GraphicShapeContext(
                *this, mpShapePtr,
                std::make_shared<oox::drawingml::Shape>("com.sun.star.drawing.GraphicObjectShape"));
                std::make_shared<oox::drawingml::Shape>(
                    u"com.sun.star.drawing.GraphicObjectShape"_ustr));
            break;
        case XML_graphicFrame: // CT_GraphicFrame
            SAL_INFO("oox",
diff --git a/oox/source/shape/WpgContext.cxx b/oox/source/shape/WpgContext.cxx
index ee9e58b..3d0e2a5 100644
--- a/oox/source/shape/WpgContext.cxx
+++ b/oox/source/shape/WpgContext.cxx
@@ -24,7 +24,7 @@ WpgContext::WpgContext(FragmentHandler2 const& rParent, const oox::drawingml::Sh
    : FragmentHandler2(rParent)
    , m_bFullWPGSupport(false)
{
    mpShape = std::make_shared<oox::drawingml::Shape>("com.sun.star.drawing.GroupShape");
    mpShape = std::make_shared<oox::drawingml::Shape>(u"com.sun.star.drawing.GroupShape"_ustr);
    mpShape->setWps(true);
    if (pMaster)
        pMaster->addChild(mpShape);
@@ -45,10 +45,10 @@ oox::core::ContextHandlerRef WpgContext::onCreateContext(sal_Int32 nElementToken
        {
            if (m_bFullWPGSupport)
            {
                return new oox::shape::WpsContext(
                    *this, uno::Reference<drawing::XShape>(), mpShape,
                    std::make_shared<oox::drawingml::Shape>("com.sun.star.drawing.CustomShape",
                                                            /*bDefaultHeight=*/false));
                return new oox::shape::WpsContext(*this, uno::Reference<drawing::XShape>(), mpShape,
                                                  std::make_shared<oox::drawingml::Shape>(
                                                      u"com.sun.star.drawing.CustomShape"_ustr,
                                                      /*bDefaultHeight=*/false));
            }

            // Don't set default character height, Writer has its own way to set
@@ -56,13 +56,14 @@ oox::core::ContextHandlerRef WpgContext::onCreateContext(sal_Int32 nElementToken
            // it.
            return new oox::drawingml::ShapeContext(
                *this, mpShape,
                std::make_shared<oox::drawingml::Shape>("com.sun.star.drawing.CustomShape",
                std::make_shared<oox::drawingml::Shape>(u"com.sun.star.drawing.CustomShape"_ustr,
                                                        /*bDefaultHeight=*/false));
        }
        case XML_pic:
            return new oox::drawingml::GraphicShapeContext(
                *this, mpShape,
                std::make_shared<oox::drawingml::Shape>("com.sun.star.drawing.GraphicObjectShape"));
                std::make_shared<oox::drawingml::Shape>(
                    u"com.sun.star.drawing.GraphicObjectShape"_ustr));
        case XML_grpSp:
        {
            if (m_bFullWPGSupport)
@@ -74,12 +75,12 @@ oox::core::ContextHandlerRef WpgContext::onCreateContext(sal_Int32 nElementToken

            return new oox::drawingml::ShapeGroupContext(
                *this, mpShape,
                std::make_shared<oox::drawingml::Shape>("com.sun.star.drawing.GroupShape"));
                std::make_shared<oox::drawingml::Shape>(u"com.sun.star.drawing.GroupShape"_ustr));
        }
        case XML_graphicFrame:
        {
            auto pShape = std::make_shared<oox::drawingml::Shape>(
                "com.sun.star.drawing.GraphicObjectShape");
                u"com.sun.star.drawing.GraphicObjectShape"_ustr);
            pShape->setWps(true);
            return new oox::drawingml::GraphicalObjectFrameContext(*this, mpShape, pShape,
                                                                   /*bEmbedShapesInChart=*/true);
diff --git a/oox/source/shape/WpsContext.cxx b/oox/source/shape/WpsContext.cxx
index f0d5ed8..6d7b3d1 100644
--- a/oox/source/shape/WpsContext.cxx
+++ b/oox/source/shape/WpsContext.cxx
@@ -584,7 +584,7 @@ oox::core::ContextHandlerRef WpsContext::onCreateContext(sal_Int32 nElementToken
                break;
            // Generate new shape
            oox::drawingml::ShapePtr pShape = std::make_shared<oox::drawingml::Shape>(
                "com.sun.star.drawing.ConnectorShape", false);
                u"com.sun.star.drawing.ConnectorShape"_ustr, false);
            pShape->setConnectorShape(true);
            pShape->setWps(true);
            pShape->setWordprocessingCanvas(true);
diff --git a/sc/source/filter/inc/drawingfragment.hxx b/sc/source/filter/inc/drawingfragment.hxx
index 0ba281d..820983a 100644
--- a/sc/source/filter/inc/drawingfragment.hxx
+++ b/sc/source/filter/inc/drawingfragment.hxx
@@ -58,7 +58,7 @@ public:
    explicit            Shape(
                            const WorksheetHelper& rHelper,
                            const AttributeList& rAttribs,
                            const char* pcServiceName );
                            const OUString& rServiceName );

private:
    virtual void        finalizeXShape(
diff --git a/sc/source/filter/oox/drawingfragment.cxx b/sc/source/filter/oox/drawingfragment.cxx
index 2d5416b..efb6f72 100644
--- a/sc/source/filter/oox/drawingfragment.cxx
+++ b/sc/source/filter/oox/drawingfragment.cxx
@@ -91,8 +91,8 @@ void ShapeMacroAttacher::attachMacro( const OUString& rMacroUrl )
    }
}

Shape::Shape( const WorksheetHelper& rHelper, const AttributeList& rAttribs, const char* pcServiceName ) :
    ::oox::drawingml::Shape( pcServiceName ),
Shape::Shape( const WorksheetHelper& rHelper, const AttributeList& rAttribs, const OUString& rServiceName ) :
    ::oox::drawingml::Shape( rServiceName ),
    WorksheetHelper( rHelper )
{
    OUString aMacro = rAttribs.getXString( XML_macro, OUString() );
@@ -134,32 +134,32 @@ GroupShapeContext::GroupShapeContext( const FragmentHandler2& rParent,
    {
        case XDR_TOKEN( sp ):
        {
            ShapePtr xShape = std::make_shared<Shape>( rHelper, rAttribs, "com.sun.star.drawing.CustomShape" );
            ShapePtr xShape = std::make_shared<Shape>( rHelper, rAttribs, u"com.sun.star.drawing.CustomShape"_ustr );
            if( pxShape ) *pxShape = xShape;
            return new ShapeContext( rParent, rxParentShape, xShape );
        }
        case XDR_TOKEN( cxnSp ):
        {
            ShapePtr xShape = std::make_shared<Shape>( rHelper, rAttribs, "com.sun.star.drawing.ConnectorShape" );
            ShapePtr xShape = std::make_shared<Shape>( rHelper, rAttribs, u"com.sun.star.drawing.ConnectorShape"_ustr );
            if( pxShape ) *pxShape = xShape;
            return new ConnectorShapeContext(rParent, rxParentShape, xShape,
                                             xShape->getConnectorShapeProperties());
        }
        case XDR_TOKEN( pic ):
        {
            ShapePtr xShape = std::make_shared<Shape>( rHelper, rAttribs, "com.sun.star.drawing.GraphicObjectShape" );
            ShapePtr xShape = std::make_shared<Shape>( rHelper, rAttribs, u"com.sun.star.drawing.GraphicObjectShape"_ustr );
            if( pxShape ) *pxShape = xShape;
            return new GraphicShapeContext( rParent, rxParentShape, xShape );
        }
        case XDR_TOKEN( graphicFrame ):
        {
            ShapePtr xShape = std::make_shared<Shape>( rHelper, rAttribs, "com.sun.star.drawing.GraphicObjectShape" );
            ShapePtr xShape = std::make_shared<Shape>( rHelper, rAttribs, u"com.sun.star.drawing.GraphicObjectShape"_ustr );
            if( pxShape ) *pxShape = xShape;
            return new GraphicalObjectFrameContext( rParent, rxParentShape, xShape, rHelper.getSheetType() != WorksheetType::Chart );
        }
        case XDR_TOKEN( grpSp ):
        {
            ShapePtr xShape = std::make_shared<Shape>( rHelper, rAttribs, "com.sun.star.drawing.GroupShape" );
            ShapePtr xShape = std::make_shared<Shape>( rHelper, rAttribs, u"com.sun.star.drawing.GroupShape"_ustr );
            if( pxShape ) *pxShape = xShape;
            return new GroupShapeContext( rParent, rHelper, rxParentShape, xShape );
        }