diff options
-rw-r--r-- | sd/inc/sdpage.hxx | 1 | ||||
-rw-r--r-- | sd/source/core/sdpage.cxx | 19 | ||||
-rw-r--r-- | sd/source/ui/dlg/masterlayoutdlg.cxx | 18 |
3 files changed, 23 insertions, 15 deletions
diff --git a/sd/inc/sdpage.hxx b/sd/inc/sdpage.hxx index 391b0ef800d5..767cf3907a67 100644 --- a/sd/inc/sdpage.hxx +++ b/sd/inc/sdpage.hxx @@ -176,6 +176,7 @@ public: void EnsureMasterPageDefaultBackground(); SdrObject* CreatePresObj(PresObjKind eObjKind, bool bVertical, const Rectangle& rRect, bool bInsert=false); SdrObject* CreateDefaultPresObj(PresObjKind eObjKind, bool bInsert); + void DestroyDefaultPresObj(PresObjKind eObjKind); SdrObject* GetPresObj(PresObjKind eObjKind, int nIndex = 1, bool bFuzzySearch = false ); PresObjKind GetPresObjKind(SdrObject* pObj) const; OUString GetPresObjText(PresObjKind eObjKind) const; diff --git a/sd/source/core/sdpage.cxx b/sd/source/core/sdpage.cxx index 75e41fb8b085..355400b1eb90 100644 --- a/sd/source/core/sdpage.cxx +++ b/sd/source/core/sdpage.cxx @@ -1019,6 +1019,25 @@ SdrObject* SdPage::CreateDefaultPresObj(PresObjKind eObjKind, bool bInsert) } } +void SdPage::DestroyDefaultPresObj(PresObjKind eObjKind) +{ + SdrObject* pObject = GetPresObj( eObjKind ); + + if( pObject ) + { + SdDrawDocument *pDoc = static_cast<SdDrawDocument*>(pModel); + + const bool bUndo = pDoc->IsUndoEnabled(); + if( bUndo ) + pDoc->AddUndo(pDoc->GetSdrUndoFactory().CreateUndoDeleteObject(*pObject)); + SdrObjList* pOL = pObject->GetObjList(); + pOL->RemoveObject(pObject->GetOrdNumDirect()); + + if( !bUndo ) + SdrObject::Free(pObject); + } +} + /************************************************************************* |* |* return title area diff --git a/sd/source/ui/dlg/masterlayoutdlg.cxx b/sd/source/ui/dlg/masterlayoutdlg.cxx index d9e525f39a2f..840037256ef2 100644 --- a/sd/source/ui/dlg/masterlayoutdlg.cxx +++ b/sd/source/ui/dlg/masterlayoutdlg.cxx @@ -121,26 +121,14 @@ void MasterLayoutDialog::applyChanges() mpDoc->EndUndo(); } -void MasterLayoutDialog::create( PresObjKind eKind ) +void MasterLayoutDialog::create(PresObjKind eKind) { - mpCurrentPage->CreateDefaultPresObj( eKind, true ); + mpCurrentPage->CreateDefaultPresObj(eKind, true); } void MasterLayoutDialog::remove( PresObjKind eKind ) { - SdrObject* pObject = mpCurrentPage->GetPresObj( eKind ); - - if( pObject ) - { - const bool bUndo = mpDoc->IsUndoEnabled(); - if( bUndo ) - mpDoc->AddUndo(mpDoc->GetSdrUndoFactory().CreateUndoDeleteObject(*pObject)); - SdrObjList* pOL =pObject->GetObjList(); - pOL->RemoveObject(pObject->GetOrdNumDirect()); - - if( !bUndo ) - SdrObject::Free(pObject); - } + mpCurrentPage->DestroyDefaultPresObj(eKind); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |