move implementation from RemoveCaption() to removeFromDrawPageAndFree()

Change-Id: I4f98112c13dfcd5c6c2fdb5b682cca494d63a954
diff --git a/sc/inc/postit.hxx b/sc/inc/postit.hxx
index 4c0c10b..8791a8b 100644
--- a/sc/inc/postit.hxx
+++ b/sc/inc/postit.hxx
@@ -68,6 +68,10 @@ public:
     */
    void removeFromDrawPage( SdrPage& rDrawPage );

    /** Remove from draw page and free caption object if no Undo recording.
     */
    void removeFromDrawPageAndFree();

    /** Release all management of the SdrCaptionObj* in all instances of this
        list and dissolve. The SdrCaptionObj pointer returned is ready to be
        managed elsewhere.
diff --git a/sc/source/core/data/postit.cxx b/sc/source/core/data/postit.cxx
index 2acc07a..36d1f82 100644
--- a/sc/source/core/data/postit.cxx
+++ b/sc/source/core/data/postit.cxx
@@ -717,6 +717,30 @@ void ScCaptionPtr::removeFromDrawPage( SdrPage& rDrawPage )
    assert(pObj == mpCaption); (void)pObj;
}

void ScCaptionPtr::removeFromDrawPageAndFree()
{
    assert(mpHead && mpCaption);
    SdrPage* pDrawPage = mpCaption->GetPage();
    SAL_WARN_IF( !pDrawPage, "sc.core", "ScCaptionPtr::removeFromDrawPageAndFree - object without drawing page");
    if (pDrawPage)
    {
        pDrawPage->RecalcObjOrdNums();
        ScDrawLayer* pDrawLayer = dynamic_cast<ScDrawLayer*>(mpCaption->GetModel());
        SAL_WARN_IF( !pDrawLayer, "sc.core", "ScCaptionPtr::removeFromDrawPageAndFree - object without drawing layer");
        // create drawing undo action (before removing the object to have valid draw page in undo action)
        const bool bRecording = (pDrawLayer && pDrawLayer->IsRecording());
        if (bRecording)
            pDrawLayer->AddCalcUndo( new SdrUndoDelObj( *mpCaption ));
        // remove the object from the drawing page, delete if undo is disabled
        removeFromDrawPage( *pDrawPage );
        if (!bRecording)
        {
            SdrObject* pObj = release();
            SdrObject::Free( pObj );
        }
    }
}

SdrCaptionObj* ScCaptionPtr::release()
{
    SdrCaptionObj* pTmp = mpCaption;
@@ -1074,27 +1098,8 @@ void ScPostIt::RemoveCaption()
        undo documents refer to captions in original document, do not remove
        them from drawing layer here). */
    ScDrawLayer* pDrawLayer = mrDoc.GetDrawLayer();
    if( maNoteData.mxCaption && (pDrawLayer == maNoteData.mxCaption->GetModel()) )
    {
        OSL_ENSURE( pDrawLayer, "ScPostIt::RemoveCaption - object without drawing layer" );
        SdrPage* pDrawPage = maNoteData.mxCaption->GetPage();
        OSL_ENSURE( pDrawPage, "ScPostIt::RemoveCaption - object without drawing page" );
        if( pDrawPage )
        {
            pDrawPage->RecalcObjOrdNums();
            // create drawing undo action (before removing the object to have valid draw page in undo action)
            const bool bRecording = (pDrawLayer && pDrawLayer->IsRecording());
            if( bRecording )
                pDrawLayer->AddCalcUndo( new SdrUndoDelObj( *maNoteData.mxCaption.get() ) );
            // remove the object from the drawing page, delete if undo is disabled
            maNoteData.mxCaption.removeFromDrawPage( *pDrawPage );
            if( !bRecording )
            {
                SdrObject* pObj = maNoteData.mxCaption.release();
                SdrObject::Free( pObj );
            }
        }
    }
    if (maNoteData.mxCaption && (pDrawLayer == maNoteData.mxCaption->GetModel()))
        maNoteData.mxCaption.removeFromDrawPageAndFree();
    // Either the caption object is gone or, because of Undo or clipboard is
    // held in at least two instances, or only one instance in Undo because the
    // original sheet in this document is just deleted, or the Undo document is