From 69c9a077b3052fc012d2f23c00dfcc901c65583d Mon Sep 17 00:00:00 2001 From: Noel Grandin Date: Fri, 5 Oct 2018 13:39:58 +0200 Subject: return by unique_ptr from CreateDefaultObject in sd/ Change-Id: I6e103ef4b858ceb0d350069f523cb3cb670fe95b Reviewed-on: https://gerrit.libreoffice.org/61440 Tested-by: Jenkins Reviewed-by: Noel Grandin --- sd/source/ui/func/fucon3d.cxx | 8 ++++---- sd/source/ui/func/fuconarc.cxx | 8 ++++---- sd/source/ui/func/fuconbez.cxx | 10 +++++----- sd/source/ui/func/fuconcs.cxx | 10 +++++----- sd/source/ui/func/fuconrec.cxx | 22 +++++++++++----------- sd/source/ui/func/fuconuno.cxx | 6 +++--- sd/source/ui/func/fupoor.cxx | 2 +- sd/source/ui/func/futext.cxx | 8 ++++---- sd/source/ui/inc/fucon3d.hxx | 2 +- sd/source/ui/inc/fuconarc.hxx | 2 +- sd/source/ui/inc/fuconbez.hxx | 2 +- sd/source/ui/inc/fuconcs.hxx | 2 +- sd/source/ui/inc/fuconrec.hxx | 2 +- sd/source/ui/inc/fuconuno.hxx | 2 +- sd/source/ui/inc/fupoor.hxx | 3 ++- sd/source/ui/inc/futext.hxx | 2 +- sd/source/ui/view/drviewse.cxx | 7 ++++--- 17 files changed, 50 insertions(+), 48 deletions(-) diff --git a/sd/source/ui/func/fucon3d.cxx b/sd/source/ui/func/fucon3d.cxx index 6761ad0e8295..f4f45dc5ca88 100644 --- a/sd/source/ui/func/fucon3d.cxx +++ b/sd/source/ui/func/fucon3d.cxx @@ -380,7 +380,7 @@ void FuConstruct3dObject::Activate() FuConstruct::Activate(); } -SdrObject* FuConstruct3dObject::CreateDefaultObject(const sal_uInt16 nID, const ::tools::Rectangle& rRectangle) +SdrObjectUniquePtr FuConstruct3dObject::CreateDefaultObject(const sal_uInt16 nID, const ::tools::Rectangle& rRectangle) { E3dCompoundObject* p3DObj = ImpCreateBasic3DShape(); @@ -393,7 +393,7 @@ SdrObject* FuConstruct3dObject::CreateDefaultObject(const sal_uInt16 nID, const double fW(aVolume.getWidth()); double fH(aVolume.getHeight()); ::tools::Rectangle a3DRect(0, 0, static_cast(fW), static_cast(fH)); - E3dScene* pScene = new E3dScene(*mpDoc); + std::unique_ptr< E3dScene, SdrObjectFreeOp > pScene(new E3dScene(*mpDoc)); // copied code from E3dView::InitScene double fCamZ(aVolume.getMaxZ() + ((fW + fH) / 4.0)); @@ -409,7 +409,7 @@ SdrObject* FuConstruct3dObject::CreateDefaultObject(const sal_uInt16 nID, const pScene->SetCamera(aCam); pScene->InsertObject(p3DObj); pScene->NbcSetSnapRect(a3DRect); - ImpPrepareBasic3DShape(p3DObj, pScene); + ImpPrepareBasic3DShape(p3DObj, pScene.get()); SfxItemSet aAttr(mpDoc->GetPool()); SetStyleSheet(aAttr, p3DObj); aAttr.Put(XLineStyleItem (drawing::LineStyle_NONE)); @@ -451,7 +451,7 @@ SdrObject* FuConstruct3dObject::CreateDefaultObject(const sal_uInt16 nID, const // use changed rectangle, not original one pScene->SetLogicRect(aRect); - return pScene; + return SdrObjectUniquePtr(pScene.release()); } } // end of namespace sd diff --git a/sd/source/ui/func/fuconarc.cxx b/sd/source/ui/func/fuconarc.cxx index 6967a1495017..4f7cf8c0252f 100644 --- a/sd/source/ui/func/fuconarc.cxx +++ b/sd/source/ui/func/fuconarc.cxx @@ -200,17 +200,17 @@ void FuConstructArc::Activate() FuConstruct::Activate(); } -SdrObject* FuConstructArc::CreateDefaultObject(const sal_uInt16 nID, const ::tools::Rectangle& rRectangle) +SdrObjectUniquePtr FuConstructArc::CreateDefaultObject(const sal_uInt16 nID, const ::tools::Rectangle& rRectangle) { - SdrObject* pObj = SdrObjFactory::MakeNewObject( + SdrObjectUniquePtr pObj(SdrObjFactory::MakeNewObject( mpView->getSdrModelFromSdrView(), mpView->GetCurrentObjInventor(), - mpView->GetCurrentObjIdentifier()); + mpView->GetCurrentObjIdentifier())); if(pObj) { - if( dynamic_cast< const SdrCircObj *>( pObj ) != nullptr) + if( dynamic_cast< const SdrCircObj *>( pObj.get() ) != nullptr) { ::tools::Rectangle aRect(rRectangle); diff --git a/sd/source/ui/func/fuconbez.cxx b/sd/source/ui/func/fuconbez.cxx index 28aadb7c3da8..ebc57cb87ebc 100644 --- a/sd/source/ui/func/fuconbez.cxx +++ b/sd/source/ui/func/fuconbez.cxx @@ -298,7 +298,7 @@ void FuConstructBezierPolygon::SetEditMode(sal_uInt16 nMode) rBindings.Invalidate(SID_BEZIER_INSERT); } -SdrObject* FuConstructBezierPolygon::CreateDefaultObject(const sal_uInt16 nID, const ::tools::Rectangle& rRectangle) +SdrObjectUniquePtr FuConstructBezierPolygon::CreateDefaultObject(const sal_uInt16 nID, const ::tools::Rectangle& rRectangle) { // case SID_DRAW_POLYGON: // case SID_DRAW_POLYGON_NOFILL: @@ -309,14 +309,14 @@ SdrObject* FuConstructBezierPolygon::CreateDefaultObject(const sal_uInt16 nID, c // case SID_DRAW_BEZIER_FILL: // BASIC // case SID_DRAW_BEZIER_NOFILL: // BASIC - SdrObject* pObj = SdrObjFactory::MakeNewObject( + SdrObjectUniquePtr pObj(SdrObjFactory::MakeNewObject( mpView->getSdrModelFromSdrView(), mpView->GetCurrentObjInventor(), - mpView->GetCurrentObjIdentifier()); + mpView->GetCurrentObjIdentifier())); if(pObj) { - if( dynamic_cast< const SdrPathObj *>( pObj ) != nullptr) + if( auto pPathObj = dynamic_cast< SdrPathObj *>( pObj.get() ) ) { basegfx::B2DPolyPolygon aPoly; @@ -435,7 +435,7 @@ SdrObject* FuConstructBezierPolygon::CreateDefaultObject(const sal_uInt16 nID, c } } - static_cast(pObj)->SetPathPoly(aPoly); + pPathObj->SetPathPoly(aPoly); } else { diff --git a/sd/source/ui/func/fuconcs.cxx b/sd/source/ui/func/fuconcs.cxx index d0133674fc29..60fa3e6f64dc 100644 --- a/sd/source/ui/func/fuconcs.cxx +++ b/sd/source/ui/func/fuconcs.cxx @@ -234,12 +234,12 @@ const OUString& FuConstructCustomShape::GetShapeType() const return aCustomShape; } -SdrObject* FuConstructCustomShape::CreateDefaultObject(const sal_uInt16, const ::tools::Rectangle& rRectangle) +SdrObjectUniquePtr FuConstructCustomShape::CreateDefaultObject(const sal_uInt16, const ::tools::Rectangle& rRectangle) { - SdrObject* pObj = SdrObjFactory::MakeNewObject( + SdrObjectUniquePtr pObj(SdrObjFactory::MakeNewObject( mpView->getSdrModelFromSdrView(), mpView->GetCurrentObjInventor(), - mpView->GetCurrentObjIdentifier()); + mpView->GetCurrentObjIdentifier())); if( pObj ) { @@ -247,9 +247,9 @@ SdrObject* FuConstructCustomShape::CreateDefaultObject(const sal_uInt16, const : if ( doConstructOrthogonal() ) ImpForceQuadratic( aRect ); pObj->SetLogicRect( aRect ); - SetAttributes( pObj ); + SetAttributes( pObj.get() ); SfxItemSet aAttr(mpDoc->GetPool()); - SetStyleSheet(aAttr, pObj); + SetStyleSheet(aAttr, pObj.get()); pObj->SetMergedItemSet(aAttr); } return pObj; diff --git a/sd/source/ui/func/fuconrec.cxx b/sd/source/ui/func/fuconrec.cxx index 4b33fb965830..a1108cdfb593 100644 --- a/sd/source/ui/func/fuconrec.cxx +++ b/sd/source/ui/func/fuconrec.cxx @@ -711,7 +711,7 @@ void FuConstructRectangle::SetLineEnds(SfxItemSet& rAttr, SdrObject const & rObj } } -SdrObject* FuConstructRectangle::CreateDefaultObject(const sal_uInt16 nID, const ::tools::Rectangle& rRectangle) +SdrObjectUniquePtr FuConstructRectangle::CreateDefaultObject(const sal_uInt16 nID, const ::tools::Rectangle& rRectangle) { DBG_ASSERT( (nID != SID_DRAW_FONTWORK) && (nID != SID_DRAW_FONTWORK_VERTICAL ), "FuConstRectangle::CreateDefaultObject can not create Fontwork shapes!" ); @@ -768,10 +768,10 @@ SdrObject* FuConstructRectangle::CreateDefaultObject(const sal_uInt16 nID, const // case SID_CONNECTOR_LINES_CIRCLE_END: // case SID_CONNECTOR_LINES_CIRCLES: - SdrObject* pObj = SdrObjFactory::MakeNewObject( + SdrObjectUniquePtr pObj(SdrObjFactory::MakeNewObject( mpView->getSdrModelFromSdrView(), mpView->GetCurrentObjInventor(), - mpView->GetCurrentObjIdentifier()); + mpView->GetCurrentObjIdentifier())); if(pObj) { @@ -803,14 +803,14 @@ SdrObject* FuConstructRectangle::CreateDefaultObject(const sal_uInt16 nID, const case SID_LINE_ARROW_SQUARE: case SID_LINE_SQUARE_ARROW: { - if( dynamic_cast< const SdrPathObj *>( pObj ) != nullptr) + if( auto pPathObj = dynamic_cast( pObj.get() ) ) { sal_Int32 nYMiddle((aRect.Top() + aRect.Bottom()) / 2); ::basegfx::B2DPolygon aB2DPolygon; aB2DPolygon.append(::basegfx::B2DPoint(aStart.X(), nYMiddle)); aB2DPolygon.append(::basegfx::B2DPoint(aEnd.X(), nYMiddle)); - static_cast(pObj)->SetPathPoly(::basegfx::B2DPolyPolygon(aB2DPolygon)); + pPathObj->SetPathPoly(::basegfx::B2DPolyPolygon(aB2DPolygon)); } else { @@ -822,7 +822,7 @@ SdrObject* FuConstructRectangle::CreateDefaultObject(const sal_uInt16 nID, const case SID_DRAW_MEASURELINE: { - if( auto pMeasureObj = dynamic_cast< SdrMeasureObj *>( pObj ) ) + if( auto pMeasureObj = dynamic_cast< SdrMeasureObj *>( pObj.get() ) ) { sal_Int32 nYMiddle((aRect.Top() + aRect.Bottom()) / 2); pMeasureObj->SetPoint(Point(aStart.X(), nYMiddle), 0); @@ -865,7 +865,7 @@ SdrObject* FuConstructRectangle::CreateDefaultObject(const sal_uInt16 nID, const case SID_CONNECTOR_LINES_CIRCLE_END: case SID_CONNECTOR_LINES_CIRCLES: { - if( auto pEdgeObj = dynamic_cast< SdrEdgeObj *>( pObj ) ) + if( auto pEdgeObj = dynamic_cast< SdrEdgeObj *>( pObj.get() ) ) { pEdgeObj->SetTailPoint(false, aStart); pEdgeObj->SetTailPoint(true, aEnd); @@ -880,11 +880,11 @@ SdrObject* FuConstructRectangle::CreateDefaultObject(const sal_uInt16 nID, const case SID_DRAW_CAPTION: case SID_DRAW_CAPTION_VERTICAL: { - if( auto pCaptionObj = dynamic_cast< SdrCaptionObj *>( pObj ) ) + if( auto pCaptionObj = dynamic_cast< SdrCaptionObj *>( pObj.get() ) ) { bool bIsVertical(SID_DRAW_CAPTION_VERTICAL == nID); - static_cast(pObj)->SetVerticalWriting(bIsVertical); + pCaptionObj->SetVerticalWriting(bIsVertical); if(bIsVertical) { @@ -917,8 +917,8 @@ SdrObject* FuConstructRectangle::CreateDefaultObject(const sal_uInt16 nID, const } SfxItemSet aAttr(mpDoc->GetPool()); - SetStyleSheet(aAttr, pObj); - SetAttributes(aAttr, pObj); + SetStyleSheet(aAttr, pObj.get()); + SetAttributes(aAttr, pObj.get()); SetLineEnds(aAttr, *pObj); pObj->SetMergedItemSet(aAttr); } diff --git a/sd/source/ui/func/fuconuno.cxx b/sd/source/ui/func/fuconuno.cxx index c940dca65bca..0458a8724de8 100644 --- a/sd/source/ui/func/fuconuno.cxx +++ b/sd/source/ui/func/fuconuno.cxx @@ -134,14 +134,14 @@ void FuConstructUnoControl::Deactivate() mpWindow->SetPointer( aOldPointer ); } -SdrObject* FuConstructUnoControl::CreateDefaultObject(const sal_uInt16, const ::tools::Rectangle& rRectangle) +SdrObjectUniquePtr FuConstructUnoControl::CreateDefaultObject(const sal_uInt16, const ::tools::Rectangle& rRectangle) { // case SID_FM_CREATE_CONTROL: - SdrObject* pObj = SdrObjFactory::MakeNewObject( + SdrObjectUniquePtr pObj(SdrObjFactory::MakeNewObject( mpView->getSdrModelFromSdrView(), mpView->GetCurrentObjInventor(), - mpView->GetCurrentObjIdentifier()); + mpView->GetCurrentObjIdentifier())); if(pObj) { diff --git a/sd/source/ui/func/fupoor.cxx b/sd/source/ui/func/fupoor.cxx index 078bdb610c5a..ac64ac4ccde1 100644 --- a/sd/source/ui/func/fupoor.cxx +++ b/sd/source/ui/func/fupoor.cxx @@ -1019,7 +1019,7 @@ void FuPoor::ReceiveRequest(SfxRequest& /*rReq*/) { } -SdrObject* FuPoor::CreateDefaultObject(const sal_uInt16, const ::tools::Rectangle& ) +SdrObjectUniquePtr FuPoor::CreateDefaultObject(const sal_uInt16, const ::tools::Rectangle& ) { // empty base implementation return nullptr; diff --git a/sd/source/ui/func/futext.cxx b/sd/source/ui/func/futext.cxx index ae817ac5d000..786730151acd 100644 --- a/sd/source/ui/func/futext.cxx +++ b/sd/source/ui/func/futext.cxx @@ -1304,17 +1304,17 @@ void FuText::DoubleClick(const MouseEvent& ) /** Removed the insertion of default text and putting a new text object directly into edit mode. */ -SdrObject* FuText::CreateDefaultObject(const sal_uInt16 nID, const ::tools::Rectangle& rRectangle) +SdrObjectUniquePtr FuText::CreateDefaultObject(const sal_uInt16 nID, const ::tools::Rectangle& rRectangle) { - SdrObject* pObj = SdrObjFactory::MakeNewObject( + SdrObjectUniquePtr pObj( SdrObjFactory::MakeNewObject( mpView->getSdrModelFromSdrView(), mpView->GetCurrentObjInventor(), mpView->GetCurrentObjIdentifier(), - nullptr); + nullptr) ); if(pObj) { - if( auto pText = dynamic_cast< SdrTextObj *>( pObj ) ) + if( auto pText = dynamic_cast< SdrTextObj *>( pObj.get() ) ) { pText->SetLogicRect(rRectangle); diff --git a/sd/source/ui/inc/fucon3d.hxx b/sd/source/ui/inc/fucon3d.hxx index dd9743f35565..5712f94115ca 100644 --- a/sd/source/ui/inc/fucon3d.hxx +++ b/sd/source/ui/inc/fucon3d.hxx @@ -43,7 +43,7 @@ public: virtual void Activate() override; - virtual SdrObject* CreateDefaultObject(const sal_uInt16 nID, const ::tools::Rectangle& rRectangle) override; + virtual SdrObjectUniquePtr CreateDefaultObject(const sal_uInt16 nID, const ::tools::Rectangle& rRectangle) override; private: FuConstruct3dObject ( diff --git a/sd/source/ui/inc/fuconarc.hxx b/sd/source/ui/inc/fuconarc.hxx index 828bdea99234..6fc4cbc3bff8 100644 --- a/sd/source/ui/inc/fuconarc.hxx +++ b/sd/source/ui/inc/fuconarc.hxx @@ -38,7 +38,7 @@ public: virtual void Activate() override; - virtual SdrObject* CreateDefaultObject(const sal_uInt16 nID, const ::tools::Rectangle& rRectangle) override; + virtual SdrObjectUniquePtr CreateDefaultObject(const sal_uInt16 nID, const ::tools::Rectangle& rRectangle) override; private: FuConstructArc ( diff --git a/sd/source/ui/inc/fuconbez.hxx b/sd/source/ui/inc/fuconbez.hxx index 8bb42e88da86..15754c4b3c94 100644 --- a/sd/source/ui/inc/fuconbez.hxx +++ b/sd/source/ui/inc/fuconbez.hxx @@ -47,7 +47,7 @@ public: void SetEditMode(sal_uInt16 nMode); sal_uInt16 GetEditMode() { return nEditMode; } - virtual SdrObject* CreateDefaultObject(const sal_uInt16 nID, const ::tools::Rectangle& rRectangle) override; + virtual SdrObjectUniquePtr CreateDefaultObject(const sal_uInt16 nID, const ::tools::Rectangle& rRectangle) override; private: FuConstructBezierPolygon ( diff --git a/sd/source/ui/inc/fuconcs.hxx b/sd/source/ui/inc/fuconcs.hxx index a66ee13aad0c..33889a8bae0b 100644 --- a/sd/source/ui/inc/fuconcs.hxx +++ b/sd/source/ui/inc/fuconcs.hxx @@ -45,7 +45,7 @@ public: void SetAttributes( SdrObject* pObj ); const OUString& GetShapeType() const; - virtual SdrObject* CreateDefaultObject(const sal_uInt16 nID, const ::tools::Rectangle& rRectangle) override; + virtual SdrObjectUniquePtr CreateDefaultObject(const sal_uInt16 nID, const ::tools::Rectangle& rRectangle) override; // #i33136# virtual bool doConstructOrthogonal() const override; diff --git a/sd/source/ui/inc/fuconrec.hxx b/sd/source/ui/inc/fuconrec.hxx index 0de3e237e591..b59addc97ae9 100644 --- a/sd/source/ui/inc/fuconrec.hxx +++ b/sd/source/ui/inc/fuconrec.hxx @@ -49,7 +49,7 @@ public: void SetAttributes(SfxItemSet& rAttr, SdrObject* pObj); void SetLineEnds(SfxItemSet& rAttr, SdrObject const & rObj); - virtual SdrObject* CreateDefaultObject(const sal_uInt16 nID, const ::tools::Rectangle& rRectangle) override; + virtual SdrObjectUniquePtr CreateDefaultObject(const sal_uInt16 nID, const ::tools::Rectangle& rRectangle) override; private: FuConstructRectangle ( diff --git a/sd/source/ui/inc/fuconuno.hxx b/sd/source/ui/inc/fuconuno.hxx index 248f8c60da84..c627f81d7780 100644 --- a/sd/source/ui/inc/fuconuno.hxx +++ b/sd/source/ui/inc/fuconuno.hxx @@ -45,7 +45,7 @@ public: virtual void Activate() override; virtual void Deactivate() override; - virtual SdrObject* CreateDefaultObject(const sal_uInt16 nID, const ::tools::Rectangle& rRectangle) override; + virtual SdrObjectUniquePtr CreateDefaultObject(const sal_uInt16 nID, const ::tools::Rectangle& rRectangle) override; private: FuConstructUnoControl( diff --git a/sd/source/ui/inc/fupoor.hxx b/sd/source/ui/inc/fupoor.hxx index ca77a62a83f3..720737743db0 100644 --- a/sd/source/ui/inc/fupoor.hxx +++ b/sd/source/ui/inc/fupoor.hxx @@ -24,6 +24,7 @@ #include #include #include +#include #include @@ -89,7 +90,7 @@ public: void StartDelayToScrollTimer (); - virtual SdrObject* CreateDefaultObject(const sal_uInt16 nID, const ::tools::Rectangle& rRectangle); + virtual SdrObjectUniquePtr CreateDefaultObject(const sal_uInt16 nID, const ::tools::Rectangle& rRectangle); /** is called when the current function should be aborted.

This is used when a function gets a KEY_ESCAPE but can also diff --git a/sd/source/ui/inc/futext.hxx b/sd/source/ui/inc/futext.hxx index 37ac47b73049..c5a15467b750 100644 --- a/sd/source/ui/inc/futext.hxx +++ b/sd/source/ui/inc/futext.hxx @@ -55,7 +55,7 @@ public: void DeleteDefaultText(); SdrTextObj* GetTextObj() { return mxTextObj.get(); } - virtual SdrObject* CreateDefaultObject(const sal_uInt16 nID, const ::tools::Rectangle& rRectangle) override; + virtual SdrObjectUniquePtr CreateDefaultObject(const sal_uInt16 nID, const ::tools::Rectangle& rRectangle) override; /** is called when the current function should be aborted.

This is used when a function gets a KEY_ESCAPE but can also diff --git a/sd/source/ui/view/drviewse.cxx b/sd/source/ui/view/drviewse.cxx index 61e8572cbaa5..ca96961b0fcb 100644 --- a/sd/source/ui/view/drviewse.cxx +++ b/sd/source/ui/view/drviewse.cxx @@ -615,12 +615,13 @@ void DrawViewShell::FuPermanent(SfxRequest& rReq) if(pPageView) { // create the default object - SdrObject* pObj = GetCurrentFunction()->CreateDefaultObject(nSId, aNewObjectRectangle); + SdrObjectUniquePtr pObj = GetCurrentFunction()->CreateDefaultObject(nSId, aNewObjectRectangle); if(pObj) { + auto pObjTmp = pObj.get(); // insert into page - GetView()->InsertObjectAtView(pObj, *pPageView); + GetView()->InsertObjectAtView(pObj.release(), *pPageView); // Now that pFuActual has done what it was created for we // can switch on the edit mode for callout objects. @@ -635,7 +636,7 @@ void DrawViewShell::FuPermanent(SfxRequest& rReq) ExecuteList(SID_TEXTEDIT, SfxCallMode::SYNCHRON | SfxCallMode::RECORD, { &aItem }); // Put text object into edit mode. - GetView()->SdrBeginTextEdit(static_cast(pObj), pPageView); + GetView()->SdrBeginTextEdit(static_cast(pObjTmp), pPageView); break; } } -- cgit