chart2/source/controller/main/ChartController_Tools.cxx | 4 cui/source/dialogs/SpellDialog.cxx | 45 ++---- cui/source/inc/SpellDialog.hxx | 2 cui/source/tabpages/transfrm.cxx | 9 - dbaccess/source/ui/control/sqledit.cxx | 4 dbaccess/source/ui/inc/JoinTableView.hxx | 2 dbaccess/source/ui/inc/singledoccontroller.hxx | 2 dbaccess/source/ui/misc/singledoccontroller.cxx | 4 dbaccess/source/ui/querydesign/JoinTableView.cxx | 9 - dbaccess/source/ui/querydesign/QueryTableView.cxx | 23 +-- dbaccess/source/ui/querydesign/QueryTextView.cxx | 4 dbaccess/source/ui/querydesign/SelectionBrowseBox.cxx | 20 +- dbaccess/source/ui/tabledesign/TEditControl.cxx | 17 +- editeng/source/editeng/impedit.hxx | 4 editeng/source/editeng/impedit2.cxx | 27 +-- editeng/source/editeng/impedit4.cxx | 6 editeng/source/editeng/impedit5.cxx | 30 ++-- editeng/source/outliner/outleeng.cxx | 3 editeng/source/outliner/outlin2.cxx | 4 editeng/source/outliner/outliner.cxx | 21 +- editeng/source/outliner/outlvw.cxx | 5 framework/source/fwe/helper/undomanagerhelper.cxx | 3 include/editeng/outliner.hxx | 2 include/svl/undo.hxx | 2 include/svx/svddrgmt.hxx | 2 include/svx/svdedtv.hxx | 7 include/svx/svdmodel.hxx | 2 include/svx/svdundo.hxx | 42 ++--- include/vcl/texteng.hxx | 2 reportdesign/source/core/inc/ReportUndoFactory.hxx | 40 ++--- reportdesign/source/core/sdr/ReportUndoFactory.cxx | 49 +++--- reportdesign/source/core/sdr/UndoEnv.cxx | 15 +- reportdesign/source/ui/inc/ReportController.hxx | 2 reportdesign/source/ui/report/ReportController.cxx | 16 +- reportdesign/source/ui/report/SectionView.cxx | 3 sc/source/ui/docshell/arealink.cxx | 4 sc/source/ui/docshell/dbdocfun.cxx | 30 ++-- sc/source/ui/docshell/dbdocimp.cxx | 2 sc/source/ui/docshell/docfunc.cxx | 120 ++++++++-------- sc/source/ui/docshell/docfuncutil.cxx | 2 sc/source/ui/docshell/docsh4.cxx | 8 - sc/source/ui/docshell/docsh5.cxx | 16 +- sc/source/ui/docshell/impex.cxx | 2 sc/source/ui/docshell/olinefun.cxx | 18 +- sc/source/ui/docshell/tablink.cxx | 4 sc/source/ui/drawfunc/drawsh5.cxx | 2 sc/source/ui/drawfunc/fuins2.cxx | 4 sc/source/ui/drawfunc/futext3.cxx | 6 sc/source/ui/namedlg/namedefdlg.cxx | 2 sc/source/ui/unoobj/TablePivotCharts.cxx | 4 sc/source/ui/unoobj/cellsuno.cxx | 12 - sc/source/ui/unoobj/chartuno.cxx | 6 sc/source/ui/view/dbfunc.cxx | 6 sc/source/ui/view/dbfunc3.cxx | 6 sc/source/ui/view/drawvie3.cxx | 4 sc/source/ui/view/drawvie4.cxx | 10 - sc/source/ui/view/drawview.cxx | 6 sc/source/ui/view/formatsh.cxx | 8 - sc/source/ui/view/preview.cxx | 4 sc/source/ui/view/spelldialog.cxx | 2 sc/source/ui/view/viewfun2.cxx | 26 +-- sc/source/ui/view/viewfun3.cxx | 18 +- sc/source/ui/view/viewfun4.cxx | 8 - sc/source/ui/view/viewfun7.cxx | 2 sc/source/ui/view/viewfunc.cxx | 22 +- sd/inc/Annotation.hxx | 2 sd/inc/undo/undofactory.hxx | 12 - sd/inc/undo/undomanager.hxx | 2 sd/source/core/annotations/Annotation.cxx | 6 sd/source/core/drawdoc3.cxx | 34 +--- sd/source/core/sdpage.cxx | 10 - sd/source/core/sdpage2.cxx | 9 - sd/source/core/text/textapi.cxx | 2 sd/source/core/undo/undofactory.cxx | 25 +-- sd/source/core/undo/undomanager.cxx | 8 - sd/source/ui/animations/CustomAnimationPane.cxx | 4 sd/source/ui/animations/SlideTransitionPane.cxx | 4 sd/source/ui/dlg/LayerTabBar.cxx | 12 - sd/source/ui/dlg/headerfooterdlg.cxx | 14 - sd/source/ui/func/fuoaprms.cxx | 4 sd/source/ui/func/fupage.cxx | 6 sd/source/ui/func/fuprobjs.cxx | 5 sd/source/ui/func/fusel.cxx | 4 sd/source/ui/sidebar/DocumentHelper.cxx | 11 - sd/source/ui/slidesorter/controller/SlsSlotManager.cxx | 12 - sd/source/ui/view/ViewShellImplementation.cxx | 8 - sd/source/ui/view/drawview.cxx | 16 +- sd/source/ui/view/drviews2.cxx | 6 sd/source/ui/view/drviews3.cxx | 8 - sd/source/ui/view/drviewsb.cxx | 10 - sd/source/ui/view/drviewse.cxx | 2 sd/source/ui/view/sdview.cxx | 20 +- sd/source/ui/view/sdview2.cxx | 4 sd/source/ui/view/sdview3.cxx | 2 sd/source/ui/view/viewshe2.cxx | 8 - starmath/source/document.cxx | 10 - svl/source/undo/undo.cxx | 7 svx/source/engine3d/dragmt3d.cxx | 3 svx/source/form/fmpgeimp.cxx | 5 svx/source/form/fmshimp.cxx | 2 svx/source/form/fmundo.cxx | 3 svx/source/form/navigatortree.cxx | 4 svx/source/form/navigatortreemodel.cxx | 4 svx/source/svdraw/svddrgmt.cxx | 29 --- svx/source/svdraw/svddrgv.cxx | 8 - svx/source/svdraw/svdedtv.cxx | 3 svx/source/svdraw/svdedtv1.cxx | 34 +--- svx/source/svdraw/svdedtv2.cxx | 3 svx/source/svdraw/svdedxv.cxx | 30 +--- svx/source/svdraw/svdmodel.cxx | 14 - svx/source/svdraw/svdobj.cxx | 12 - svx/source/svdraw/svdundo.cxx | 88 +++++------ svx/source/table/cell.cxx | 2 svx/source/table/svdotable.cxx | 2 svx/source/table/tablecolumn.cxx | 2 svx/source/table/tablecontroller.cxx | 4 svx/source/table/tablemodel.cxx | 9 - svx/source/table/tablerow.cxx | 2 svx/source/unodraw/unopage.cxx | 3 sw/source/core/frmedt/fecopy.cxx | 2 sw/source/core/inc/UndoManager.hxx | 2 sw/source/core/undo/docundo.cxx | 8 - sw/source/uibase/shells/drawsh.cxx | 2 vcl/source/edit/texteng.cxx | 18 +- 124 files changed, 667 insertions(+), 714 deletions(-)
New commits: commit f7ce839c7844f029c0a1ac83a5638e83356b4c4b Author: Noel Grandin <[email protected]> AuthorDate: Mon Oct 8 11:22:10 2018 +0200 Commit: Noel Grandin <[email protected]> CommitDate: Tue Oct 9 12:09:55 2018 +0200 use unique_ptr in SfxUndoManager::AddUndoAction Change-Id: I11483e3cece12a7373f4276972b4c899edf1ce15 Reviewed-on: https://gerrit.libreoffice.org/61566 Tested-by: Jenkins Reviewed-by: Noel Grandin <[email protected]> diff --git a/chart2/source/controller/main/ChartController_Tools.cxx b/chart2/source/controller/main/ChartController_Tools.cxx index d91807f1e593..b1310ae68550 100644 --- a/chart2/source/controller/main/ChartController_Tools.cxx +++ b/chart2/source/controller/main/ChartController_Tools.cxx @@ -417,7 +417,7 @@ void ChartController::impl_PasteShapes( SdrModel* pModel ) } pDestPage->InsertObject( pNewObj ); - m_pDrawViewWrapper->AddUndo( new SdrUndoInsertObj( *pNewObj ) ); + m_pDrawViewWrapper->AddUndo( o3tl::make_unique<SdrUndoInsertObj>( *pNewObj ) ); xSelShape = xShape; } } @@ -480,7 +480,7 @@ void ChartController::impl_PasteStringAsTextShape( const OUString& rString, cons if ( pObj ) { m_pDrawViewWrapper->BegUndo( SvxResId( RID_SVX_3D_UNDO_EXCHANGE_PASTE ) ); - m_pDrawViewWrapper->AddUndo( new SdrUndoInsertObj( *pObj ) ); + m_pDrawViewWrapper->AddUndo( o3tl::make_unique<SdrUndoInsertObj>( *pObj ) ); m_pDrawViewWrapper->EndUndo(); impl_switchDiagramPositioningToExcludingPositioning(); diff --git a/cui/source/dialogs/SpellDialog.cxx b/cui/source/dialogs/SpellDialog.cxx index d71f12a41ac6..c92ec7d4ee5b 100644 --- a/cui/source/dialogs/SpellDialog.cxx +++ b/cui/source/dialogs/SpellDialog.cxx @@ -577,11 +577,11 @@ IMPL_LINK_NOARG(SpellDialog, ChangeAllHdl, Button*, void) if(nAdded == DictionaryError::NONE) { - SpellUndoAction_Impl* pAction = new SpellUndoAction_Impl( - SPELLUNDO_CHANGE_ADD_TO_DICTIONARY, aDialogUndoLink); + std::unique_ptr<SpellUndoAction_Impl> pAction(new SpellUndoAction_Impl( + SPELLUNDO_CHANGE_ADD_TO_DICTIONARY, aDialogUndoLink)); pAction->SetDictionary(aXDictionary); pAction->SetAddedWord(aOldWord); - m_pSentenceED->AddUndoAction(pAction); + m_pSentenceED->AddUndoAction(std::move(pAction)); } m_pSentenceED->ChangeMarkedWord(aString, eLang); @@ -623,11 +623,11 @@ IMPL_LINK( SpellDialog, IgnoreAllHdl, Button *, pButton, void ) OUString() ); if(nAdded == DictionaryError::NONE) { - SpellUndoAction_Impl* pAction = new SpellUndoAction_Impl( - SPELLUNDO_CHANGE_ADD_TO_DICTIONARY, aDialogUndoLink); + std::unique_ptr<SpellUndoAction_Impl> pAction(new SpellUndoAction_Impl( + SPELLUNDO_CHANGE_ADD_TO_DICTIONARY, aDialogUndoLink)); pAction->SetDictionary(aXDictionary); pAction->SetAddedWord(sErrorText); - m_pSentenceED->AddUndoAction(pAction); + m_pSentenceED->AddUndoAction(std::move(pAction)); } } @@ -764,7 +764,7 @@ IMPL_LINK(SpellDialog, LanguageSelectHdl, ListBox&, rBox, void) SpellContinue_Impl(); } - m_pSentenceED->AddUndoAction(new SpellUndoAction_Impl(SPELLUNDO_CHANGE_LANGUAGE, aDialogUndoLink)); + m_pSentenceED->AddUndoAction(o3tl::make_unique<SpellUndoAction_Impl>(SPELLUNDO_CHANGE_LANGUAGE, aDialogUndoLink)); } SpellDialog::UpdateBoxes_Impl(); } @@ -889,11 +889,11 @@ void SpellDialog::AddToDictionaryExecute( sal_uInt16 nItemId, PopupMenu const *p if (nAddRes == DictionaryError::NONE) { - SpellUndoAction_Impl* pAction = new SpellUndoAction_Impl( - SPELLUNDO_CHANGE_ADD_TO_DICTIONARY, aDialogUndoLink); + std::unique_ptr<SpellUndoAction_Impl> pAction(new SpellUndoAction_Impl( + SPELLUNDO_CHANGE_ADD_TO_DICTIONARY, aDialogUndoLink)); pAction->SetDictionary( xDic ); pAction->SetAddedWord( aNewWord ); - m_pSentenceED->AddUndoAction( pAction ); + m_pSentenceED->AddUndoAction( std::move(pAction) ); } // failed because there is already an entry? if (DictionaryError::NONE != nAddRes && xDic->getEntry( aNewWord ).is()) @@ -919,7 +919,7 @@ IMPL_LINK(SpellDialog, ModifyHdl, Edit&, rEd, void) m_pSuggestionLB->Disable(); OUString sNewText( m_pSentenceED->GetText() ); m_pAutoCorrPB->Enable( sNewText != m_pSentenceED->GetText() ); - SpellUndoAction_Impl* pSpellAction = new SpellUndoAction_Impl(SPELLUNDO_CHANGE_TEXTENGINE, aDialogUndoLink); + std::unique_ptr<SpellUndoAction_Impl> pSpellAction(new SpellUndoAction_Impl(SPELLUNDO_CHANGE_TEXTENGINE, aDialogUndoLink)); if(!m_pChangeAllPB->IsEnabled()) { m_pChangeAllPB->Enable(); @@ -930,7 +930,7 @@ IMPL_LINK(SpellDialog, ModifyHdl, Edit&, rEd, void) m_pChangePB->Enable(); pSpellAction->SetEnableChangePB(); } - m_pSentenceED->AddUndoAction(pSpellAction); + m_pSentenceED->AddUndoAction(std::move(pSpellAction)); } }; @@ -1598,15 +1598,15 @@ bool SentenceEditWindow_Impl::MarkNextError( bool bIgnoreCurrentError, const css MoveErrorMarkTo(aCursor.GetIndex(), pNextError->GetEnd(), bGrammarError); bRet = true; //add an undo action - SpellUndoAction_Impl* pAction = new SpellUndoAction_Impl( - SPELLUNDO_CHANGE_NEXTERROR, GetSpellDialog()->aDialogUndoLink); + std::unique_ptr<SpellUndoAction_Impl> pAction(new SpellUndoAction_Impl( + SPELLUNDO_CHANGE_NEXTERROR, GetSpellDialog()->aDialogUndoLink)); pAction->SetErrorMove(nOldErrorStart, nOldErrorEnd); const SpellErrorAttrib* pOldAttrib = static_cast<const SpellErrorAttrib*>( pTextEngine->FindAttrib( TextPaM(0, nOldErrorStart), TEXTATTR_SPELL_ERROR )); pAction->SetErrorLanguageSelected(pOldAttrib && pOldAttrib->GetErrorDescription().aSuggestions.getLength() && LanguageTag( pOldAttrib->GetErrorDescription().aLocale).getLanguageType() == GetSpellDialog()->m_pLanguageLB->GetSelectedLanguage()); - AddUndoAction(pAction); + AddUndoAction(std::move(pAction)); } else m_nErrorStart = m_nErrorEnd = nTextLen; @@ -1688,10 +1688,10 @@ void SentenceEditWindow_Impl::ChangeMarkedWord(const OUString& rNewWord, Languag nEndTemp += nDiffLen; m_nErrorEnd = static_cast<sal_Int32>(nEndTemp); - SpellUndoAction_Impl* pAction = new SpellUndoAction_Impl( - SPELLUNDO_MOVE_ERROREND, GetSpellDialog()->aDialogUndoLink); + std::unique_ptr<SpellUndoAction_Impl> pAction(new SpellUndoAction_Impl( + SPELLUNDO_MOVE_ERROREND, GetSpellDialog()->aDialogUndoLink)); pAction->SetOffset(nDiffLen); - AddUndoAction(pAction); + AddUndoAction(std::move(pAction)); if(pSpellErrorDescription) SetAttrib( SpellErrorAttrib(*pSpellErrorDescription), 0, m_nErrorStart, m_nErrorEnd ); SetAttrib( SpellLanguageAttrib(eLanguage), 0, m_nErrorStart, m_nErrorEnd ); @@ -1931,10 +1931,10 @@ void SentenceEditWindow_Impl::ResetUndo() } -void SentenceEditWindow_Impl::AddUndoAction( SfxUndoAction *pAction ) +void SentenceEditWindow_Impl::AddUndoAction( std::unique_ptr<SfxUndoAction> pAction ) { SfxUndoManager& rUndoMgr = GetTextEngine()->GetUndoManager(); - rUndoMgr.AddUndoAction(pAction); + rUndoMgr.AddUndoAction(std::move(pAction)); GetSpellDialog()->m_pUndoPB->Enable(); } @@ -2002,9 +2002,8 @@ void SentenceEditWindow_Impl::SetUndoEditMode(bool bSet) pTextEngine->RemoveAttribs( 0, sal_uInt16(TEXTATTR_FONTWEIGHT) ); //put the appropriate action on the Undo-stack - SpellUndoAction_Impl* pAction = new SpellUndoAction_Impl( - SPELLUNDO_UNDO_EDIT_MODE, GetSpellDialog()->aDialogUndoLink); - AddUndoAction(pAction); + AddUndoAction( o3tl::make_unique<SpellUndoAction_Impl>( + SPELLUNDO_UNDO_EDIT_MODE, GetSpellDialog()->aDialogUndoLink) ); pSpellDialog->m_pChangePB->Enable(); } diff --git a/cui/source/inc/SpellDialog.hxx b/cui/source/inc/SpellDialog.hxx index 41d68d99ba68..ab7f22b79bd4 100644 --- a/cui/source/inc/SpellDialog.hxx +++ b/cui/source/inc/SpellDialog.hxx @@ -110,7 +110,7 @@ public: void ResetUndo(); void Undo(); - void AddUndoAction( SfxUndoAction *pAction ); + void AddUndoAction( std::unique_ptr<SfxUndoAction> pAction ); size_t GetUndoActionCount(); void UndoActionStart( sal_uInt16 nId ); void UndoActionEnd(); diff --git a/cui/source/tabpages/transfrm.cxx b/cui/source/tabpages/transfrm.cxx index 46c3d2570762..eac242eda649 100644 --- a/cui/source/tabpages/transfrm.cxx +++ b/cui/source/tabpages/transfrm.cxx @@ -526,10 +526,9 @@ bool SvxSlantTabPage::FillItemSet(SfxItemSet* rAttrs) static_cast< SdrObjCustomShape& >( *pView->GetMarkedObjectList().GetMark(0)->GetMarkedSdrObj())); SdrModel& rModel(rSdrObjCustomShape.getSdrModelFromSdrObject()); - SdrUndoAction* pUndo( - rModel.IsUndoEnabled() - ? rModel.GetSdrUndoFactory().CreateUndoAttrObject(rSdrObjCustomShape) - : nullptr); + std::unique_ptr<SdrUndoAction> pUndo; + if (rModel.IsUndoEnabled()) + pUndo = rModel.GetSdrUndoFactory().CreateUndoAttrObject(rSdrObjCustomShape); if(pUndo) { @@ -561,7 +560,7 @@ bool SvxSlantTabPage::FillItemSet(SfxItemSet* rAttrs) if (pUndo) { - rModel.AddUndo(pUndo); + rModel.AddUndo(std::move(pUndo)); rModel.EndUndo(); } } diff --git a/dbaccess/source/ui/control/sqledit.cxx b/dbaccess/source/ui/control/sqledit.cxx index db774978ad60..c94c5335b8df 100644 --- a/dbaccess/source/ui/control/sqledit.cxx +++ b/dbaccess/source/ui/control/sqledit.cxx @@ -153,10 +153,10 @@ IMPL_LINK_NOARG(OSqlEdit, OnUndoActionTimer, Timer *, void) { OJoinController& rController = m_pView->getContainerWindow()->getDesignView()->getController(); SfxUndoManager& rUndoMgr = rController.GetUndoManager(); - OSqlEditUndoAct* pUndoAct = new OSqlEditUndoAct( this ); + std::unique_ptr<OSqlEditUndoAct> pUndoAct(new OSqlEditUndoAct( this )); pUndoAct->SetOriginalText( m_strOrigText ); - rUndoMgr.AddUndoAction( pUndoAct ); + rUndoMgr.AddUndoAction( std::move(pUndoAct) ); rController.InvalidateFeature(SID_UNDO); rController.InvalidateFeature(SID_REDO); diff --git a/dbaccess/source/ui/inc/JoinTableView.hxx b/dbaccess/source/ui/inc/JoinTableView.hxx index b44aa22d7cab..ffa729812805 100644 --- a/dbaccess/source/ui/inc/JoinTableView.hxx +++ b/dbaccess/source/ui/inc/JoinTableView.hxx @@ -318,7 +318,7 @@ namespace dbaui modified @param _pAction a possible undo action to add at the controller */ - void invalidateAndModify(SfxUndoAction *_pAction); + void invalidateAndModify(std::unique_ptr<SfxUndoAction> _pAction); private: using Window::Scroll; diff --git a/dbaccess/source/ui/inc/singledoccontroller.hxx b/dbaccess/source/ui/inc/singledoccontroller.hxx index 018a69dd01f2..37cc6740063e 100644 --- a/dbaccess/source/ui/inc/singledoccontroller.hxx +++ b/dbaccess/source/ui/inc/singledoccontroller.hxx @@ -58,7 +58,7 @@ namespace dbaui additionally invalidates the UNDO and REDO slot @param pAction the undo action to add */ - void addUndoActionAndInvalidate( SfxUndoAction* pAction ); + void addUndoActionAndInvalidate( std::unique_ptr<SfxUndoAction> pAction ); // OGenericUnoController virtual FeatureState GetState( sal_uInt16 nId ) const override; diff --git a/dbaccess/source/ui/misc/singledoccontroller.cxx b/dbaccess/source/ui/misc/singledoccontroller.cxx index 0a0411bbb891..072a63eece79 100644 --- a/dbaccess/source/ui/misc/singledoccontroller.cxx +++ b/dbaccess/source/ui/misc/singledoccontroller.cxx @@ -77,10 +77,10 @@ namespace dbaui return m_pData->m_xUndoManager->GetSfxUndoManager(); } - void OSingleDocumentController::addUndoActionAndInvalidate(SfxUndoAction *_pAction) + void OSingleDocumentController::addUndoActionAndInvalidate(std::unique_ptr<SfxUndoAction> _pAction) { // add undo action - GetUndoManager().AddUndoAction( _pAction ); + GetUndoManager().AddUndoAction( std::move(_pAction) ); // when we add an undo action the controller was modified setModified( true ); diff --git a/dbaccess/source/ui/querydesign/JoinTableView.cxx b/dbaccess/source/ui/querydesign/JoinTableView.cxx index dda98512cb77..5e46b34afbca 100644 --- a/dbaccess/source/ui/querydesign/JoinTableView.cxx +++ b/dbaccess/source/ui/querydesign/JoinTableView.cxx @@ -42,6 +42,7 @@ #include <UITools.hxx> #include <cppuhelper/exc_hlp.hxx> #include <tools/diagnose_ex.h> +#include <o3tl/make_unique.hxx> #include <algorithm> #include <functional> @@ -1065,10 +1066,10 @@ IMPL_LINK_NOARG(OJoinTableView, OnDragScrollTimer, Timer *, void) ScrollWhileDragging(); } -void OJoinTableView::invalidateAndModify(SfxUndoAction *_pAction) +void OJoinTableView::invalidateAndModify(std::unique_ptr<SfxUndoAction> _pAction) { Invalidate(InvalidateFlags::NoChildren); - m_pView->getController().addUndoActionAndInvalidate(_pAction); + m_pView->getController().addUndoActionAndInvalidate(std::move(_pAction)); } void OJoinTableView::TabWinMoved(OTableWindow* ptWhich, const Point& ptOldPosition) @@ -1076,7 +1077,7 @@ void OJoinTableView::TabWinMoved(OTableWindow* ptWhich, const Point& ptOldPositi Point ptThumbPos(GetHScrollBar().GetThumbPos(), GetVScrollBar().GetThumbPos()); ptWhich->GetData()->SetPosition(ptWhich->GetPosPixel() + ptThumbPos); - invalidateAndModify(new OJoinMoveTabWinUndoAct(this, ptOldPosition, ptWhich)); + invalidateAndModify(o3tl::make_unique<OJoinMoveTabWinUndoAct>(this, ptOldPosition, ptWhich)); } void OJoinTableView::TabWinSized(OTableWindow* ptWhich, const Point& ptOldPosition, const Size& szOldSize) @@ -1084,7 +1085,7 @@ void OJoinTableView::TabWinSized(OTableWindow* ptWhich, const Point& ptOldPositi ptWhich->GetData()->SetSize(ptWhich->GetSizePixel()); ptWhich->GetData()->SetPosition(ptWhich->GetPosPixel()); - invalidateAndModify(new OJoinSizeTabWinUndoAct(this, ptOldPosition, szOldSize, ptWhich)); + invalidateAndModify(o3tl::make_unique<OJoinSizeTabWinUndoAct>(this, ptOldPosition, szOldSize, ptWhich)); } bool OJoinTableView::IsAddAllowed() diff --git a/dbaccess/source/ui/querydesign/QueryTableView.cxx b/dbaccess/source/ui/querydesign/QueryTableView.cxx index 81573f0498a7..2e462c444dac 100644 --- a/dbaccess/source/ui/querydesign/QueryTableView.cxx +++ b/dbaccess/source/ui/querydesign/QueryTableView.cxx @@ -49,6 +49,7 @@ #include <strings.hrc> #include <strings.hxx> #include <svtools/treelistentry.hxx> +#include <o3tl/make_unique.hxx> using namespace dbaui; using namespace ::com::sun::star::uno; @@ -67,13 +68,13 @@ namespace @param _bOwner is the undo action the owner */ void addUndoAction( OQueryTableView const * _pView, - OQueryTabConnUndoAction* _pUndoAction, + std::unique_ptr<OQueryTabConnUndoAction> _pUndoAction, OQueryTableConnection* _pConnection, bool _bOwner = false) { _pUndoAction->SetOwnership(_bOwner); _pUndoAction->SetConnection(_pConnection); - _pView->getDesignView()->getController().addUndoActionAndInvalidate(_pUndoAction); + _pView->getDesignView()->getController().addUndoActionAndInvalidate(std::move(_pUndoAction)); } /** openJoinDialog opens the join dialog with this connection data @param _pView the view which we use @@ -110,7 +111,7 @@ namespace // add an undo action if ( _bAddUndo ) addUndoAction( _pView, - new OQueryAddTabConnUndoAction(_pView), + o3tl::make_unique<OQueryAddTabConnUndoAction>(_pView), static_cast< OQueryTableConnection*>(_pConnection)); // redraw _pConnection->RecalcLines(); @@ -421,16 +422,14 @@ void OQueryTableView::AddTabWin(const OUString& _rComposedName, const OUString& // No need to initialize, as that happens in ShowTabWin // New UndoAction - OQueryTabWinShowUndoAct* pUndoAction = new OQueryTabWinShowUndoAct(this); + std::unique_ptr<OQueryTabWinShowUndoAct> pUndoAction(new OQueryTabWinShowUndoAct(this)); pUndoAction->SetTabWin(pNewTabWin); // Window - bool bSuccess = ShowTabWin(pNewTabWin, pUndoAction,bAppend); + bool bSuccess = ShowTabWin(pNewTabWin, pUndoAction.get(), bAppend); if(!bSuccess) { // reset table window pUndoAction->SetTabWin(nullptr); pUndoAction->SetOwnership(false); - - delete pUndoAction; return; } @@ -531,7 +530,7 @@ void OQueryTableView::AddTabWin(const OUString& _rComposedName, const OUString& } // My parent needs to be informed about the delete - m_pView->getController().addUndoActionAndInvalidate( pUndoAction ); + m_pView->getController().addUndoActionAndInvalidate( std::move(pUndoAction) ); } void OQueryTableView::AddConnection(const OJoinExchangeData& jxdSource, const OJoinExchangeData& jxdDest) @@ -631,7 +630,7 @@ bool OQueryTableView::RemoveConnection(VclPtr<OTableConnection>& rConnection, bo // add undo action addUndoAction(this, - new OQueryDelTabConnUndoAction(this), + o3tl::make_unique<OQueryDelTabConnUndoAction>(this), xConnection.get(), true); @@ -688,16 +687,16 @@ void OQueryTableView::RemoveTabWin(OTableWindow* pTabWin) rUndoMgr.EnterListAction(DBA_RES(STR_QUERY_UNDO_TABWINDELETE) , OUString(), 0, ViewShellId(-1)); // add the Undo-Action - OQueryTabWinDelUndoAct* pUndoAction = new OQueryTabWinDelUndoAct(this); + std::unique_ptr<OQueryTabWinDelUndoAct> pUndoAction(new OQueryTabWinDelUndoAct(this)); pUndoAction->SetTabWin(static_cast< OQueryTableWindow*>(pTabWin)); // and hide the window - HideTabWin(static_cast< OQueryTableWindow*>(pTabWin), pUndoAction); + HideTabWin(static_cast< OQueryTableWindow*>(pTabWin), pUndoAction.get()); // Undo Actions and delete the fields in SelectionBrowseBox pParent->TableDeleted( static_cast< OQueryTableWindowData*>(pTabWin->GetData().get())->GetAliasName() ); - m_pView->getController().addUndoActionAndInvalidate( pUndoAction ); + m_pView->getController().addUndoActionAndInvalidate( std::move(pUndoAction) ); rUndoMgr.LeaveListAction(); modified(); diff --git a/dbaccess/source/ui/querydesign/QueryTextView.cxx b/dbaccess/source/ui/querydesign/QueryTextView.cxx index 1b192ce1dcca..3ff1296c8579 100644 --- a/dbaccess/source/ui/querydesign/QueryTextView.cxx +++ b/dbaccess/source/ui/querydesign/QueryTextView.cxx @@ -75,10 +75,10 @@ OUString OQueryTextView::getStatement() void OQueryTextView::clear() { - OSqlEditUndoAct* pUndoAct = new OSqlEditUndoAct( m_pEdit ); + std::unique_ptr<OSqlEditUndoAct> pUndoAct(new OSqlEditUndoAct( m_pEdit )); pUndoAct->SetOriginalText( m_pEdit->GetText() ); - getContainerWindow()->getDesignView()->getController().addUndoActionAndInvalidate( pUndoAct ); + getContainerWindow()->getDesignView()->getController().addUndoActionAndInvalidate( std::move(pUndoAct) ); m_pEdit->SetText(OUString()); } diff --git a/dbaccess/source/ui/querydesign/SelectionBrowseBox.cxx b/dbaccess/source/ui/querydesign/SelectionBrowseBox.cxx index 178f90991727..37475fb2d01b 100644 --- a/dbaccess/source/ui/querydesign/SelectionBrowseBox.cxx +++ b/dbaccess/source/ui/querydesign/SelectionBrowseBox.cxx @@ -310,11 +310,11 @@ void OSelectionBrowseBox::ColumnMoved( sal_uInt16 nColId, bool _bCreateUndo ) // create the undo action if ( !m_bInUndoMode && _bCreateUndo ) { - OTabFieldMovedUndoAct* pUndoAct = new OTabFieldMovedUndoAct(this); + std::unique_ptr<OTabFieldMovedUndoAct> pUndoAct(new OTabFieldMovedUndoAct(this)); pUndoAct->SetColumnPosition( nOldPos + 1); pUndoAct->SetTabFieldDescr(pOldEntry); - getDesignView()->getController().addUndoActionAndInvalidate(pUndoAct); + getDesignView()->getController().addUndoActionAndInvalidate(std::move(pUndoAct)); } } } @@ -1289,10 +1289,10 @@ void OSelectionBrowseBox::RemoveField(sal_uInt16 nColumnId ) // trigger UndoAction if ( !m_bInUndoMode ) { - OTabFieldDelUndoAct* pUndoAction = new OTabFieldDelUndoAct( this ); + std::unique_ptr<OTabFieldDelUndoAct> pUndoAction(new OTabFieldDelUndoAct( this )); pUndoAction->SetTabFieldDescr(pDesc); pUndoAction->SetColumnPosition(nPos); - rController.addUndoActionAndInvalidate( pUndoAction ); + rController.addUndoActionAndInvalidate( std::move(pUndoAction) ); } RemoveColumn(nColumnId); @@ -1578,10 +1578,10 @@ OTableFieldDescRef OSelectionBrowseBox::InsertField(const OTableFieldDescRef& _r if ( !m_bInUndoMode ) { // trigger UndoAction - OTabFieldCreateUndoAct* pUndoAction = new OTabFieldCreateUndoAct( this ); + std::unique_ptr<OTabFieldCreateUndoAct> pUndoAction(new OTabFieldCreateUndoAct( this )); pUndoAction->SetTabFieldDescr( pEntry ); pUndoAction->SetColumnPosition(_nColumnPosition); - getDesignView()->getController().addUndoActionAndInvalidate( pUndoAction ); + getDesignView()->getController().addUndoActionAndInvalidate( std::move(pUndoAction) ); } return pEntry; @@ -2322,10 +2322,10 @@ void OSelectionBrowseBox::ColumnResized(sal_uInt16 nColId) if ( !m_bInUndoMode ) { // create the undo action - OTabFieldSizedUndoAct* pUndo = new OTabFieldSizedUndoAct(this); + std::unique_ptr<OTabFieldSizedUndoAct> pUndo(new OTabFieldSizedUndoAct(this)); pUndo->SetColumnPosition( nPos ); pUndo->SetOriginalWidth(pEntry->GetColWidth()); - getDesignView()->getController().addUndoActionAndInvalidate(pUndo); + getDesignView()->getController().addUndoActionAndInvalidate(std::move(pUndo)); } pEntry->SetColWidth(sal_uInt16(GetColumnWidth(nColId))); } @@ -2452,12 +2452,12 @@ void OSelectionBrowseBox::appendUndoAction(const OUString& _rOldValue,const OUSt { if ( !m_bInUndoMode && _rNewValue != _rOldValue ) { - OTabFieldCellModifiedUndoAct* pUndoAct = new OTabFieldCellModifiedUndoAct(this); + std::unique_ptr<OTabFieldCellModifiedUndoAct> pUndoAct(new OTabFieldCellModifiedUndoAct(this)); pUndoAct->SetCellIndex(_nRow); OSL_ENSURE(GetColumnPos(GetCurColumnId()) != BROWSER_INVALIDID,"Current position isn't valid!"); pUndoAct->SetColumnPosition( GetColumnPos(GetCurColumnId()) ); pUndoAct->SetCellContents(_rOldValue); - getDesignView()->getController().addUndoActionAndInvalidate(pUndoAct); + getDesignView()->getController().addUndoActionAndInvalidate(std::move(pUndoAct)); } } diff --git a/dbaccess/source/ui/tabledesign/TEditControl.cxx b/dbaccess/source/ui/tabledesign/TEditControl.cxx index 841ab7ba8161..03936e7611f6 100644 --- a/dbaccess/source/ui/tabledesign/TEditControl.cxx +++ b/dbaccess/source/ui/tabledesign/TEditControl.cxx @@ -41,6 +41,7 @@ #include <SqlNameEdit.hxx> #include <TableRowExchange.hxx> #include <sot/storage.hxx> +#include <o3tl/make_unique.hxx> #include <UITools.hxx> #include "TableFieldControl.hxx" #include <dsntypes.hxx> @@ -507,7 +508,7 @@ void OTableEditorCtrl::SaveData(long nRow, sal_uInt16 nColId) // If FieldDescr exists, the field is deleted and the old content restored if (pActFieldDescr) { - GetUndoManager().AddUndoAction(new OTableEditorTypeSelUndoAct(this, nRow, FIELD_TYPE, pActFieldDescr->getTypeInfo())); + GetUndoManager().AddUndoAction(o3tl::make_unique<OTableEditorTypeSelUndoAct>(this, nRow, FIELD_TYPE, pActFieldDescr->getTypeInfo())); SwitchType(TOTypeInfoSP()); pActFieldDescr = pActRow->GetActFieldDescr(); } @@ -658,14 +659,14 @@ void OTableEditorCtrl::CellModified( long nRow, sal_uInt16 nColId ) nInvalidateTypeEvent = Application::PostUserEvent( LINK(this, OTableEditorCtrl, InvalidateFieldType), nullptr, true ); pActFieldDescr = pActRow->GetActFieldDescr(); pDescrWin->DisplayData( pActFieldDescr ); - GetUndoManager().AddUndoAction( new OTableEditorTypeSelUndoAct(this, nRow, nColId+1, TOTypeInfoSP()) ); + GetUndoManager().AddUndoAction( o3tl::make_unique<OTableEditorTypeSelUndoAct>(this, nRow, nColId+1, TOTypeInfoSP()) ); } if( nColId != FIELD_TYPE ) - GetUndoManager().AddUndoAction( new OTableDesignCellUndoAct(this, nRow, nColId) ); + GetUndoManager().AddUndoAction( o3tl::make_unique<OTableDesignCellUndoAct>(this, nRow, nColId) ); else { - GetUndoManager().AddUndoAction(new OTableEditorTypeSelUndoAct(this, GetCurRow(), nColId, GetFieldDescr(GetCurRow())->getTypeInfo())); + GetUndoManager().AddUndoAction(o3tl::make_unique<OTableEditorTypeSelUndoAct>(this, GetCurRow(), nColId, GetFieldDescr(GetCurRow())->getTypeInfo())); resetType(); } @@ -799,7 +800,7 @@ void OTableEditorCtrl::InsertRows( long nRow ) RowInserted( nRow,vInsertedUndoRedoRows.size() ); // Create the Undo-Action - GetUndoManager().AddUndoAction( new OTableEditorInsUndoAct(this, nRow,vInsertedUndoRedoRows) ); + GetUndoManager().AddUndoAction( o3tl::make_unique<OTableEditorInsUndoAct>(this, nRow,vInsertedUndoRedoRows) ); GetView()->getController().setModified( true ); InvalidateFeatures(); } @@ -808,7 +809,7 @@ void OTableEditorCtrl::DeleteRows() { OSL_ENSURE(GetView()->getController().isDropAllowed(),"Call of DeleteRows not valid here. Please check isDropAllowed!"); // Create the Undo-Action - GetUndoManager().AddUndoAction( new OTableEditorDelUndoAct(this) ); + GetUndoManager().AddUndoAction( o3tl::make_unique<OTableEditorDelUndoAct>(this) ); // Delete all marked rows long nIndex = FirstSelectedRow(); @@ -845,7 +846,7 @@ void OTableEditorCtrl::InsertNewRows( long nRow ) long nInsertRows = GetSelectRowCount(); if( !nInsertRows ) nInsertRows = 1; - GetUndoManager().AddUndoAction( new OTableEditorInsNewUndoAct(this, nRow, nInsertRows) ); + GetUndoManager().AddUndoAction( o3tl::make_unique<OTableEditorInsNewUndoAct>(this, nRow, nInsertRows) ); // Insert the number of selected rows for( long i=nRow; i<(nRow+nInsertRows); i++ ) m_pRowList->insert( m_pRowList->begin()+i ,std::make_shared<OTableRow>()); @@ -1525,7 +1526,7 @@ void OTableEditorCtrl::SetPrimaryKey( bool bSet ) } } - GetUndoManager().AddUndoAction( new OPrimKeyUndoAct(this, aDeletedPrimKeys, aInsertedPrimKeys) ); + GetUndoManager().AddUndoAction( o3tl::make_unique<OPrimKeyUndoAct>(this, aDeletedPrimKeys, aInsertedPrimKeys) ); // Invalidate the handle-columns InvalidateHandleColumn(); diff --git a/editeng/source/editeng/impedit.hxx b/editeng/source/editeng/impedit.hxx index 16deb64c85f2..4a5daed2c2bf 100644 --- a/editeng/source/editeng/impedit.hxx +++ b/editeng/source/editeng/impedit.hxx @@ -546,11 +546,11 @@ private: void TextModified(); void CalcHeight( ParaPortion* pPortion ); - void InsertUndo( EditUndo* pUndo, bool bTryMerge = false ); + void InsertUndo( std::unique_ptr<EditUndo> pUndo, bool bTryMerge = false ); void ResetUndoManager(); bool HasUndoManager() const { return pUndoManager != nullptr; } - EditUndoSetAttribs* CreateAttribUndo( EditSelection aSel, const SfxItemSet& rSet ); + std::unique_ptr<EditUndoSetAttribs> CreateAttribUndo( EditSelection aSel, const SfxItemSet& rSet ); std::unique_ptr<EditTextObject> GetEmptyTextObject(); diff --git a/editeng/source/editeng/impedit2.cxx b/editeng/source/editeng/impedit2.cxx index e331006de1d3..c15f0fde7cbf 100644 --- a/editeng/source/editeng/impedit2.cxx +++ b/editeng/source/editeng/impedit2.cxx @@ -2088,12 +2088,11 @@ void ImpEditEngine::ImpRemoveChars( const EditPaM& rPaM, sal_Int32 nChars ) { EditSelection aSel( rPaM ); aSel.Max().SetIndex( aSel.Max().GetIndex() + nChars ); - EditUndoSetAttribs* pAttrUndo = CreateAttribUndo( aSel, GetEmptyItemSet() ); - InsertUndo( pAttrUndo ); + InsertUndo( CreateAttribUndo( aSel, GetEmptyItemSet() ) ); break; // for } } - InsertUndo(new EditUndoRemoveChars(pEditEngine, CreateEPaM(rPaM), aStr)); + InsertUndo(o3tl::make_unique<EditUndoRemoveChars>(pEditEngine, CreateEPaM(rPaM), aStr)); } aEditDoc.RemoveChars( rPaM, nChars ); @@ -2152,7 +2151,7 @@ EditSelection ImpEditEngine::ImpMoveParagraphs( Range aOldPositions, sal_Int32 n aBeginMovingParagraphsHdl.Call( aMoveParagraphsInfo ); if ( IsUndoEnabled() && !IsInUndo()) - InsertUndo(new EditUndoMoveParagraphs(pEditEngine, aOldPositions, nNewPos)); + InsertUndo(o3tl::make_unique<EditUndoMoveParagraphs>(pEditEngine, aOldPositions, nNewPos)); // do not lose sight of the Position ! ParaPortion* pDestPortion = GetParaPortions().SafeGetObject( nNewPos ); @@ -2238,7 +2237,7 @@ EditPaM ImpEditEngine::ImpConnectParagraphs( ContentNode* pLeft, ContentNode* pR if ( IsUndoEnabled() && !IsInUndo() ) { - InsertUndo( new EditUndoConnectParas(pEditEngine, + InsertUndo( o3tl::make_unique<EditUndoConnectParas>(pEditEngine, aEditDoc.GetPos( pLeft ), pLeft->Len(), pLeft->GetContentAttribs().GetItems(), pRight->GetContentAttribs().GetItems(), pLeft->GetStyleSheet(), pRight->GetStyleSheet(), bBackward ) ); @@ -2488,7 +2487,7 @@ void ImpEditEngine::ImpRemoveParagraph( sal_Int32 nPara ) ParaAttribsChanged( pNextNode ); if ( IsUndoEnabled() && !IsInUndo() ) - InsertUndo(new EditUndoDelContent(pEditEngine, pNode, nPara)); + InsertUndo(o3tl::make_unique<EditUndoDelContent>(pEditEngine, pNode, nPara)); else { aEditDoc.RemoveItemsFromPool(*pNode); @@ -2654,9 +2653,9 @@ EditPaM ImpEditEngine::InsertTextUserInput( const EditSelection& rCurSel, if ( IsUndoEnabled() && !IsInUndo() ) { - EditUndoInsertChars* pNewUndo = new EditUndoInsertChars(pEditEngine, CreateEPaM(aPaM), OUString(c)); + std::unique_ptr<EditUndoInsertChars> pNewUndo(new EditUndoInsertChars(pEditEngine, CreateEPaM(aPaM), OUString(c))); bool bTryMerge = !bDoOverwrite && ( c != ' ' ); - InsertUndo( pNewUndo, bTryMerge ); + InsertUndo( std::move(pNewUndo), bTryMerge ); } aEditDoc.InsertText( aPaM, OUString(c) ); @@ -2723,7 +2722,7 @@ EditPaM ImpEditEngine::ImpInsertText(const EditSelection& aCurSel, const OUStrin aLine = aLine.copy( 0, nMaxNewChars ); // Delete the Rest... } if ( IsUndoEnabled() && !IsInUndo() ) - InsertUndo(new EditUndoInsertChars(pEditEngine, CreateEPaM(aPaM), aLine)); + InsertUndo(o3tl::make_unique<EditUndoInsertChars>(pEditEngine, CreateEPaM(aPaM), aLine)); // Tabs ? if ( aLine.indexOf( '\t' ) == -1 ) aPaM = aEditDoc.InsertText( aPaM, aLine ); @@ -2781,7 +2780,7 @@ EditPaM ImpEditEngine::ImpFastInsertText( EditPaM aPaM, const OUString& rStr ) if ( ( aPaM.GetNode()->Len() + rStr.getLength() ) < MAXCHARSINPARA ) { if ( IsUndoEnabled() && !IsInUndo() ) - InsertUndo(new EditUndoInsertChars(pEditEngine, CreateEPaM(aPaM), rStr)); + InsertUndo(o3tl::make_unique<EditUndoInsertChars>(pEditEngine, CreateEPaM(aPaM), rStr)); aPaM = aEditDoc.InsertText( aPaM, rStr ); TextModified(); @@ -2806,7 +2805,7 @@ EditPaM ImpEditEngine::ImpInsertFeature(const EditSelection& rCurSel, const SfxP return aPaM; if ( IsUndoEnabled() && !IsInUndo() ) - InsertUndo(new EditUndoInsertFeature(pEditEngine, CreateEPaM(aPaM), rItem)); + InsertUndo(o3tl::make_unique<EditUndoInsertFeature>(pEditEngine, CreateEPaM(aPaM), rItem)); aPaM = aEditDoc.InsertFeature( aPaM, rItem ); UpdateFields(); @@ -2840,7 +2839,7 @@ EditPaM ImpEditEngine::ImpInsertParaBreak( EditPaM& rPaM, bool bKeepEndingAttrib } if ( IsUndoEnabled() && !IsInUndo() ) - InsertUndo(new EditUndoSplitPara(pEditEngine, aEditDoc.GetPos(rPaM.GetNode()), rPaM.GetIndex())); + InsertUndo(o3tl::make_unique<EditUndoSplitPara>(pEditEngine, aEditDoc.GetPos(rPaM.GetNode()), rPaM.GetIndex())); EditPaM aPaM( aEditDoc.InsertParaBreak( rPaM, bKeepEndingAttribs ) ); @@ -2899,10 +2898,10 @@ EditPaM ImpEditEngine::ImpFastInsertParagraph( sal_Int32 nPara ) if ( nPara ) { OSL_ENSURE( aEditDoc.GetObject( nPara-1 ), "FastInsertParagraph: Prev does not exist" ); - InsertUndo(new EditUndoSplitPara(pEditEngine, nPara-1, aEditDoc.GetObject( nPara-1 )->Len())); + InsertUndo(o3tl::make_unique<EditUndoSplitPara>(pEditEngine, nPara-1, aEditDoc.GetObject( nPara-1 )->Len())); } else - InsertUndo(new EditUndoSplitPara(pEditEngine, 0, 0)); + InsertUndo(o3tl::make_unique<EditUndoSplitPara>(pEditEngine, 0, 0)); } ContentNode* pNode = new ContentNode( aEditDoc.GetItemPool() ); diff --git a/editeng/source/editeng/impedit4.cxx b/editeng/source/editeng/impedit4.cxx index c57ba48bd237..66cd22344d0c 100644 --- a/editeng/source/editeng/impedit4.cxx +++ b/editeng/source/editeng/impedit4.cxx @@ -2686,7 +2686,7 @@ EditSelection ImpEditEngine::TransliterateText( const EditSelection& rSelection, bool bChanges = false; bool bLenChanged = false; - EditUndoTransliteration* pUndo = nullptr; + std::unique_ptr<EditUndoTransliteration> pUndo; utl::TransliterationWrapper aTransliterationWrapper( ::comphelper::getProcessComponentContext(), nTransliterationMode ); bool bConsiderLanguage = aTransliterationWrapper.needLanguageForTheMode(); @@ -2919,7 +2919,7 @@ EditSelection ImpEditEngine::TransliterateText( const EditSelection& rSelection, aNewSel = aSel; ESelection aESel( CreateESel( aSel ) ); - pUndo = new EditUndoTransliteration(pEditEngine, aESel, nTransliterationMode); + pUndo.reset(new EditUndoTransliteration(pEditEngine, aESel, nTransliterationMode)); const bool bSingleNode = aSel.Min().GetNode()== aSel.Max().GetNode(); const bool bHasAttribs = aSel.Min().GetNode()->GetCharAttribs().HasAttrib( aSel.Min().GetIndex(), aSel.Max().GetIndex() ); @@ -2959,7 +2959,7 @@ EditSelection ImpEditEngine::TransliterateText( const EditSelection& rSelection, { ESelection aESel( CreateESel( aNewSel ) ); pUndo->SetNewSelection( aESel ); - InsertUndo( pUndo ); + InsertUndo( std::move(pUndo) ); } if ( bChanges ) diff --git a/editeng/source/editeng/impedit5.cxx b/editeng/source/editeng/impedit5.cxx index aa34f0db573c..e9e7c67046ce 100644 --- a/editeng/source/editeng/impedit5.cxx +++ b/editeng/source/editeng/impedit5.cxx @@ -24,6 +24,7 @@ #include <svl/hint.hxx> #include <editeng/lrspitem.hxx> #include <sfx2/app.hxx> +#include <o3tl/make_unique.hxx> void ImpEditEngine::SetStyleSheetPool( SfxStyleSheetPool* pSPool ) { @@ -79,7 +80,7 @@ void ImpEditEngine::SetStyleSheet( sal_Int32 nPara, SfxStyleSheet* pStyle ) aNewStyleName = pStyle->GetName(); InsertUndo( - new EditUndoSetStyleSheet(pEditEngine, aEditDoc.GetPos( pNode ), + o3tl::make_unique<EditUndoSetStyleSheet>(pEditEngine, aEditDoc.GetPos( pNode ), aPrevStyleName, pCurStyle ? pCurStyle->GetFamily() : SfxStyleFamily::Para, aNewStyleName, pStyle ? pStyle->GetFamily() : SfxStyleFamily::Para, pNode->GetContentAttribs().GetItems() ) ); @@ -175,7 +176,7 @@ void ImpEditEngine::Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) Dispose(); } -EditUndoSetAttribs* ImpEditEngine::CreateAttribUndo( EditSelection aSel, const SfxItemSet& rSet ) +std::unique_ptr<EditUndoSetAttribs> ImpEditEngine::CreateAttribUndo( EditSelection aSel, const SfxItemSet& rSet ) { DBG_ASSERT( !aSel.DbgIsBuggy( aEditDoc ), "CreateAttribUndo: Incorrect selection "); aSel.Adjust( aEditDoc ); @@ -187,16 +188,16 @@ EditUndoSetAttribs* ImpEditEngine::CreateAttribUndo( EditSelection aSel, const S DBG_ASSERT( nStartNode <= nEndNode, "CreateAttribUndo: Start > End ?!" ); - EditUndoSetAttribs* pUndo = nullptr; + std::unique_ptr<EditUndoSetAttribs> pUndo; if ( rSet.GetPool() != &aEditDoc.GetItemPool() ) { SfxItemSet aTmpSet( GetEmptyItemSet() ); aTmpSet.Put( rSet ); - pUndo = new EditUndoSetAttribs(pEditEngine, aESel, aTmpSet); + pUndo.reset( new EditUndoSetAttribs(pEditEngine, aESel, aTmpSet) ); } else { - pUndo = new EditUndoSetAttribs(pEditEngine, aESel, rSet); + pUndo.reset( new EditUndoSetAttribs(pEditEngine, aESel, rSet) ); } SfxItemPool* pPool = pUndo->GetNewAttribs().GetPool(); @@ -261,16 +262,15 @@ void ImpEditEngine::UndoActionEnd() } } -void ImpEditEngine::InsertUndo( EditUndo* pUndo, bool bTryMerge ) +void ImpEditEngine::InsertUndo( std::unique_ptr<EditUndo> pUndo, bool bTryMerge ) { DBG_ASSERT( !IsInUndo(), "InsertUndo in Undo mode!" ); if ( pUndoMarkSelection ) { - EditUndoMarkSelection* pU = new EditUndoMarkSelection(pEditEngine, *pUndoMarkSelection); - GetUndoManager().AddUndoAction( pU ); + GetUndoManager().AddUndoAction( o3tl::make_unique<EditUndoMarkSelection>(pEditEngine, *pUndoMarkSelection) ); pUndoMarkSelection.reset(); } - GetUndoManager().AddUndoAction( pUndo, bTryMerge ); + GetUndoManager().AddUndoAction( std::move(pUndo), bTryMerge ); mbLastTryMerge = bTryMerge; } @@ -501,9 +501,9 @@ void ImpEditEngine::SetAttribs( EditSelection aSel, const SfxItemSet& rSet, SetA if ( IsUndoEnabled() && !IsInUndo() && aStatus.DoUndoAttribs() ) { - EditUndoSetAttribs* pUndo = CreateAttribUndo( aSel, rSet ); + std::unique_ptr<EditUndoSetAttribs> pUndo = CreateAttribUndo( aSel, rSet ); pUndo->SetSpecial( nSpecial ); - InsertUndo( pUndo ); + InsertUndo( std::move(pUndo) ); } bool bCheckLanguage = false; @@ -593,11 +593,11 @@ void ImpEditEngine::RemoveCharAttribs( EditSelection aSel, bool bRemoveParaAttri if ( IsUndoEnabled() && !IsInUndo() && aStatus.DoUndoAttribs() ) { // Possibly a special Undo, or itemset* - EditUndoSetAttribs* pUndo = CreateAttribUndo( aSel, GetEmptyItemSet() ); + std::unique_ptr<EditUndoSetAttribs> pUndo = CreateAttribUndo( aSel, GetEmptyItemSet() ); pUndo->SetRemoveAttribs( true ); pUndo->SetRemoveParaAttribs( bRemoveParaAttribs ); pUndo->SetRemoveWhich( nWhich ); - InsertUndo( pUndo ); + InsertUndo( std::move(pUndo) ); } // iterate over the paragraphs ... @@ -691,11 +691,11 @@ void ImpEditEngine::SetParaAttribs( sal_Int32 nPara, const SfxItemSet& rSet ) { SfxItemSet aTmpSet( GetEmptyItemSet() ); aTmpSet.Put( rSet ); - InsertUndo(new EditUndoSetParaAttribs(pEditEngine, nPara, pNode->GetContentAttribs().GetItems(), aTmpSet)); + InsertUndo(o3tl::make_unique<EditUndoSetParaAttribs>(pEditEngine, nPara, pNode->GetContentAttribs().GetItems(), aTmpSet)); } else { - InsertUndo(new EditUndoSetParaAttribs(pEditEngine, nPara, pNode->GetContentAttribs().GetItems(), rSet)); + InsertUndo(o3tl::make_unique<EditUndoSetParaAttribs>(pEditEngine, nPara, pNode->GetContentAttribs().GetItems(), rSet)); } } diff --git a/editeng/source/outliner/outleeng.cxx b/editeng/source/outliner/outleeng.cxx index 8fb8f7ee7284..9eb6f792340e 100644 --- a/editeng/source/outliner/outleeng.cxx +++ b/editeng/source/outliner/outleeng.cxx @@ -33,6 +33,7 @@ #include <editeng/eeitem.hxx> #include <editeng/editstat.hxx> #include "outlundo.hxx" +#include <o3tl/make_unique.hxx> OutlinerEditEng::OutlinerEditEng( Outliner* pEngOwner, SfxItemPool* pPool ) : EditEngine( pPool ) @@ -96,7 +97,7 @@ void OutlinerEditEng::ParagraphConnected( sal_Int32 /*nLeftParagraph*/, sal_Int3 Paragraph* pPara = pOwner->GetParagraph( nRightParagraph ); if( pPara && Outliner::HasParaFlag( pPara, ParaFlag::ISPAGE ) ) { - pOwner->InsertUndo( new OutlinerUndoChangeParaFlags( pOwner, nRightParagraph, ParaFlag::ISPAGE, ParaFlag::NONE ) ); + pOwner->InsertUndo( o3tl::make_unique<OutlinerUndoChangeParaFlags>( pOwner, nRightParagraph, ParaFlag::ISPAGE, ParaFlag::NONE ) ); } } } diff --git a/editeng/source/outliner/outlin2.cxx b/editeng/source/outliner/outlin2.cxx index bff245863eea..2e3e495a6c97 100644 --- a/editeng/source/outliner/outlin2.cxx +++ b/editeng/source/outliner/outlin2.cxx @@ -308,9 +308,9 @@ void Outliner::UndoActionEnd() pEditEngine->UndoActionEnd(); } -void Outliner::InsertUndo( EditUndo* pUndo ) +void Outliner::InsertUndo( std::unique_ptr<EditUndo> pUndo ) { - pEditEngine->GetUndoManager().AddUndoAction( pUndo ); + pEditEngine->GetUndoManager().AddUndoAction( std::move(pUndo) ); } bool Outliner::IsInUndo() diff --git a/editeng/source/outliner/outliner.cxx b/editeng/source/outliner/outliner.cxx index 01f4a218708a..42715dad0511 100644 --- a/editeng/source/outliner/outliner.cxx +++ b/editeng/source/outliner/outliner.cxx @@ -52,6 +52,7 @@ #include <svl/itempool.hxx> #include <libxml/xmlwriter.h> #include <sal/log.hxx> +#include <o3tl/make_unique.hxx> // calculate if it's RTL or not #include <unicode/ubidi.h> @@ -275,7 +276,7 @@ void Outliner::SetNumberingStartValue( sal_Int32 nPara, sal_Int16 nNumberingStar if( pPara && pPara->GetNumberingStartValue() != nNumberingStartValue ) { if( IsUndoEnabled() && !IsInUndo() ) - InsertUndo( new OutlinerUndoChangeParaNumberingRestart( this, nPara, + InsertUndo( o3tl::make_unique<OutlinerUndoChangeParaNumberingRestart>( this, nPara, pPara->GetNumberingStartValue(), nNumberingStartValue, pPara->IsParaIsNumberingRestart(), pPara->IsParaIsNumberingRestart() ) ); @@ -299,7 +300,7 @@ void Outliner::SetParaIsNumberingRestart( sal_Int32 nPara, bool bParaIsNumbering if( pPara && (pPara->IsParaIsNumberingRestart() != bParaIsNumberingRestart) ) { if( IsUndoEnabled() && !IsInUndo() ) - InsertUndo( new OutlinerUndoChangeParaNumberingRestart( this, nPara, + InsertUndo( o3tl::make_unique<OutlinerUndoChangeParaNumberingRestart>( this, nPara, pPara->GetNumberingStartValue(), pPara->GetNumberingStartValue(), pPara->IsParaIsNumberingRestart(), bParaIsNumberingRestart ) ); @@ -737,7 +738,7 @@ void Outliner::ImplInitDepth( sal_Int32 nPara, sal_Int16 nDepth, bool bCreateUnd if ( bUndo ) { - InsertUndo( new OutlinerUndoChangeDepth( this, nPara, nOldDepth, nDepth ) ); + InsertUndo( o3tl::make_unique<OutlinerUndoChangeDepth>( this, nPara, nOldDepth, nDepth ) ); } pEditEngine->SetUpdateMode( bUpdate ); @@ -759,19 +760,19 @@ bool Outliner::Expand( Paragraph const * pPara ) { if ( pParaList->HasHiddenChildren( pPara ) ) { - OLUndoExpand* pUndo = nullptr; + std::unique_ptr<OLUndoExpand> pUndo; bool bUndo = IsUndoEnabled() && !IsInUndo(); if( bUndo ) { UndoActionStart( OLUNDO_EXPAND ); - pUndo = new OLUndoExpand( this, OLUNDO_EXPAND ); + pUndo.reset( new OLUndoExpand( this, OLUNDO_EXPAND ) ); pUndo->nCount = pParaList->GetAbsPos( pPara ); } pParaList->Expand( pPara ); InvalidateBullet(pParaList->GetAbsPos(pPara)); if( bUndo ) { - InsertUndo( pUndo ); + InsertUndo( std::move(pUndo) ); UndoActionEnd(); } return true; @@ -783,7 +784,7 @@ bool Outliner::Collapse( Paragraph const * pPara ) { if ( pParaList->HasVisibleChildren( pPara ) ) // expanded { - OLUndoExpand* pUndo = nullptr; + std::unique_ptr<OLUndoExpand> pUndo; bool bUndo = false; if( !IsInUndo() && IsUndoEnabled() ) @@ -791,7 +792,7 @@ bool Outliner::Collapse( Paragraph const * pPara ) if( bUndo ) { UndoActionStart( OLUNDO_COLLAPSE ); - pUndo = new OLUndoExpand( this, OLUNDO_COLLAPSE ); + pUndo.reset( new OLUndoExpand( this, OLUNDO_COLLAPSE ) ); pUndo->nCount = pParaList->GetAbsPos( pPara ); } @@ -799,7 +800,7 @@ bool Outliner::Collapse( Paragraph const * pPara ) InvalidateBullet(pParaList->GetAbsPos(pPara)); if( bUndo ) { - InsertUndo( pUndo ); + InsertUndo( std::move(pUndo) ); UndoActionEnd(); } return true; @@ -1991,7 +1992,7 @@ void Outliner::SetParaFlag( Paragraph* pPara, ParaFlag nFlag ) if( pPara && !pPara->HasFlag( nFlag ) ) { if( IsUndoEnabled() && !IsInUndo() ) - InsertUndo( new OutlinerUndoChangeParaFlags( this, GetAbsPos( pPara ), pPara->nFlags, pPara->nFlags|nFlag ) ); + InsertUndo( o3tl::make_unique<OutlinerUndoChangeParaFlags>( this, GetAbsPos( pPara ), pPara->nFlags, pPara->nFlags|nFlag ) ); pPara->SetFlag( nFlag ); } diff --git a/editeng/source/outliner/outlvw.cxx b/editeng/source/outliner/outlvw.cxx index f86f707c4c35..f214ca3fe06d 100644 --- a/editeng/source/outliner/outlvw.cxx +++ b/editeng/source/outliner/outlvw.cxx @@ -45,6 +45,7 @@ #include <svl/eitem.hxx> #include <editeng/editstat.hxx> #include <sal/log.hxx> +#include <o3tl/make_unique.hxx> using namespace ::com::sun::star; @@ -403,7 +404,7 @@ void OutlinerView::SetAttribs( const SfxItemSet& rAttrs ) pOwner->ImplCalcBulletText( nPara, false, false ); if( !pOwner->IsInUndo() && pOwner->IsUndoEnabled() ) - pOwner->InsertUndo( new OutlinerUndoCheckPara( pOwner, nPara ) ); + pOwner->InsertUndo( o3tl::make_unique<OutlinerUndoCheckPara>( pOwner, nPara ) ); } if( !pOwner->IsInUndo() && pOwner->IsUndoEnabled() ) @@ -476,7 +477,7 @@ void OutlinerView::Indent( short nDiff ) pOwner->pEditEngine->QuickMarkInvalid( ESelection( nPara, 0, nPara, 0 ) ); if( bUndo ) - pOwner->InsertUndo( new OutlinerUndoChangeParaFlags( pOwner, nPara, nPrevFlags, pPara->nFlags ) ); + pOwner->InsertUndo( o3tl::make_unique<OutlinerUndoChangeParaFlags>( pOwner, nPara, nPrevFlags, pPara->nFlags ) ); continue; } diff --git a/framework/source/fwe/helper/undomanagerhelper.cxx b/framework/source/fwe/helper/undomanagerhelper.cxx index 656d1f05d26b..862d0a6c3a18 100644 --- a/framework/source/fwe/helper/undomanagerhelper.cxx +++ b/framework/source/fwe/helper/undomanagerhelper.cxx @@ -33,6 +33,7 @@ #include <svl/undo.hxx> #include <tools/diagnose_ex.h> #include <osl/conditn.hxx> +#include <o3tl/make_unique.hxx> #include <functional> #include <stack> @@ -655,7 +656,7 @@ namespace framework const bool bHadRedoActions = ( rUndoManager.GetRedoActionCount() > 0 ); { ::comphelper::FlagGuard aNotificationGuard( m_bAPIActionRunning ); - rUndoManager.AddUndoAction( new UndoActionWrapper( i_action ) ); + rUndoManager.AddUndoAction( o3tl::make_unique<UndoActionWrapper>( i_action ) ); } const bool bHasRedoActions = ( rUndoManager.GetRedoActionCount() > 0 ); diff --git a/include/editeng/outliner.hxx b/include/editeng/outliner.hxx index b6308599cfe3..e0d93e3323e4 100644 --- a/include/editeng/outliner.hxx +++ b/include/editeng/outliner.hxx @@ -738,7 +738,7 @@ public: bool IsUndoEnabled() const; void UndoActionStart( sal_uInt16 nId ); void UndoActionEnd(); - void InsertUndo( EditUndo* pUndo ); + void InsertUndo( std::unique_ptr<EditUndo> pUndo ); bool IsInUndo(); void ClearModifyFlag(); diff --git a/include/svl/undo.hxx b/include/svl/undo.hxx index 456a31f56b18..9451b9bd8e71 100644 --- a/include/svl/undo.hxx +++ b/include/svl/undo.hxx @@ -190,7 +190,7 @@ public: virtual ~SfxUndoManager(); void SetMaxUndoActionCount( size_t nMaxUndoActionCount ); - virtual void AddUndoAction( SfxUndoAction *pAction, bool bTryMerg=false ); + virtual void AddUndoAction( std::unique_ptr<SfxUndoAction> pAction, bool bTryMerg=false ); virtual size_t GetUndoActionCount( bool const i_currentLevel = CurrentLevel ) const; OUString GetUndoActionComment( size_t nNo=0, bool const i_currentLevel = CurrentLevel ) const; SfxUndoAction* GetUndoAction( size_t nNo=0 ) const; diff --git a/include/svx/svddrgmt.hxx b/include/svx/svddrgmt.hxx index 5bdd440e3409..0013da3284e3 100644 --- a/include/svx/svddrgmt.hxx +++ b/include/svx/svddrgmt.hxx @@ -155,7 +155,7 @@ protected: Point& Ref1() const { return mrSdrDragView.maRef1; } Point& Ref2() const { return mrSdrDragView.maRef2; } const SdrHdlList& GetHdlList() const { return getSdrDragView().GetHdlList(); } - void AddUndo(SdrUndoAction* pUndo) { getSdrDragView().AddUndo(pUndo); } + void AddUndo(std::unique_ptr<SdrUndoAction> pUndo) { getSdrDragView().AddUndo(std::move(pUndo)); } bool IsDragLimit() { return getSdrDragView().mbDragLimit; } const tools::Rectangle& GetDragLimitRect() { return getSdrDragView().maDragLimit; } const SdrMarkList& GetMarkedObjectList() { return getSdrDragView().GetMarkedObjectList(); } diff --git a/include/svx/svdedtv.hxx b/include/svx/svdedtv.hxx index 63d74b4bc74a..ba6b1172df6b 100644 --- a/include/svx/svdedtv.hxx +++ b/include/svx/svdedtv.hxx @@ -24,6 +24,7 @@ #include <svx/xpoly.hxx> #include <svx/svdmodel.hxx> #include <svx/svxdllapi.h> +#include <svx/svdundo.hxx> #include <o3tl/typed_flags_set.hxx> class SfxUndoAction; @@ -180,13 +181,13 @@ public: void BegUndo(const OUString& rComment) { mpModel->BegUndo(rComment); } // open undo-grouping void BegUndo(const OUString& rComment, const OUString& rObjDescr, SdrRepeatFunc eFunc=SdrRepeatFunc::NONE) { mpModel->BegUndo(rComment,rObjDescr,eFunc); } // open undo-grouping void EndUndo(); // close undo-grouping (incl. BroadcastEdges) - void AddUndo(SdrUndoAction* pUndo) { mpModel->AddUndo(pUndo); } // add action + void AddUndo(std::unique_ptr<SdrUndoAction> pUndo) { mpModel->AddUndo(std::move(pUndo)); } // add action // only after first BegUndo or before last EndUndo: void SetUndoComment(const OUString& rComment, const OUString& rObjDescr) { mpModel->SetUndoComment(rComment,rObjDescr); } bool IsUndoEnabled() const; - std::vector< SdrUndoAction* > CreateConnectorUndo( SdrObject& rO ); - void AddUndoActions( std::vector< SdrUndoAction* >& ); + std::vector< std::unique_ptr<SdrUndoAction> > CreateConnectorUndo( SdrObject& rO ); + void AddUndoActions( std::vector< std::unique_ptr<SdrUndoAction> > ); // Layermanagement with Undo. void InsertNewLayer(const OUString& rName, sal_uInt16 nPos); diff --git a/include/svx/svdmodel.hxx b/include/svx/svdmodel.hxx index 1cf73896c7b6..d08112592703 100644 --- a/include/svx/svdmodel.hxx +++ b/include/svx/svdmodel.hxx @@ -501,7 +501,7 @@ public: void BegUndo(const OUString& rComment); // open Undo group void BegUndo(const OUString& rComment, const OUString& rObjDescr, SdrRepeatFunc eFunc); // open Undo group void EndUndo(); // close Undo group - void AddUndo(SdrUndoAction* pUndo); + void AddUndo(std::unique_ptr<SdrUndoAction> pUndo); sal_uInt16 GetUndoBracketLevel() const { return nUndoLevel; } // only after the first BegUndo or before the last EndUndo: void SetUndoComment(const OUString& rComment); diff --git a/include/svx/svdundo.hxx b/include/svx/svdundo.hxx index c134fb986590..3efb4e75ab90 100644 --- a/include/svx/svdundo.hxx +++ b/include/svx/svdundo.hxx @@ -709,40 +709,40 @@ class SVX_DLLPUBLIC SdrUndoFactory public: // Shapes virtual ~SdrUndoFactory(); - virtual SdrUndoAction* CreateUndoMoveObject( SdrObject& rObject, const Size& rDist ); - virtual SdrUndoAction* CreateUndoGeoObject( SdrObject& rObject ); - virtual SdrUndoAction* CreateUndoAttrObject( SdrObject& rObject, bool bStyleSheet1 = false, bool bSaveText = false ); - virtual SdrUndoAction* CreateUndoRemoveObject( SdrObject& rObject, bool bOrdNumDirect = false); - virtual SdrUndoAction* CreateUndoInsertObject( SdrObject& rObject, bool bOrdNumDirect = false); - virtual SdrUndoAction* CreateUndoDeleteObject( SdrObject& rObject, bool bOrdNumDirect = false); - virtual SdrUndoAction* CreateUndoNewObject( SdrObject& rObject, bool bOrdNumDirect = false); - virtual SdrUndoAction* CreateUndoCopyObject( SdrObject& rObject, bool bOrdNumDirect = false); + virtual std::unique_ptr<SdrUndoAction> CreateUndoMoveObject( SdrObject& rObject, const Size& rDist ); + virtual std::unique_ptr<SdrUndoAction> CreateUndoGeoObject( SdrObject& rObject ); + virtual std::unique_ptr<SdrUndoAction> CreateUndoAttrObject( SdrObject& rObject, bool bStyleSheet1 = false, bool bSaveText = false ); + virtual std::unique_ptr<SdrUndoAction> CreateUndoRemoveObject( SdrObject& rObject, bool bOrdNumDirect = false); + virtual std::unique_ptr<SdrUndoAction> CreateUndoInsertObject( SdrObject& rObject, bool bOrdNumDirect = false); + virtual std::unique_ptr<SdrUndoAction> CreateUndoDeleteObject( SdrObject& rObject, bool bOrdNumDirect = false); + virtual std::unique_ptr<SdrUndoAction> CreateUndoNewObject( SdrObject& rObject, bool bOrdNumDirect = false); + virtual std::unique_ptr<SdrUndoAction> CreateUndoCopyObject( SdrObject& rObject, bool bOrdNumDirect = false); - virtual SdrUndoAction* CreateUndoObjectOrdNum( SdrObject& rObject, sal_uInt32 nOldOrdNum1, sal_uInt32 nNewOrdNum1); + virtual std::unique_ptr<SdrUndoAction> CreateUndoObjectOrdNum( SdrObject& rObject, sal_uInt32 nOldOrdNum1, sal_uInt32 nNewOrdNum1); - virtual SdrUndoAction* CreateUndoReplaceObject( SdrObject& rOldObject, SdrObject& rNewObject, bool bOrdNumDirect = false ); - virtual SdrUndoAction* CreateUndoObjectLayerChange( SdrObject& rObject, SdrLayerID aOldLayer, SdrLayerID aNewLayer ); - virtual SdrUndoAction* CreateUndoObjectSetText( SdrObject& rNewObj, sal_Int32 nText ); + virtual std::unique_ptr<SdrUndoAction> CreateUndoReplaceObject( SdrObject& rOldObject, SdrObject& rNewObject, bool bOrdNumDirect = false ); + virtual std::unique_ptr<SdrUndoAction> CreateUndoObjectLayerChange( SdrObject& rObject, SdrLayerID aOldLayer, SdrLayerID aNewLayer ); + virtual std::unique_ptr<SdrUndoAction> CreateUndoObjectSetText( SdrObject& rNewObj, sal_Int32 nText ); // Implement Title/Description Elements UI for Writer text frames, graphics and embedded objects (#i73249#) - static SdrUndoAction* CreateUndoObjectStrAttr( SdrObject& rObject, + static std::unique_ptr<SdrUndoAction> CreateUndoObjectStrAttr( SdrObject& rObject, SdrUndoObjStrAttr::ObjStrAttrType eObjStrAttrType, const OUString& sOldStr, const OUString& sNewStr ); // Layer - virtual SdrUndoAction* CreateUndoNewLayer(sal_uInt16 nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel); - virtual SdrUndoAction* CreateUndoDeleteLayer(sal_uInt16 nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel); + virtual std::unique_ptr<SdrUndoAction> CreateUndoNewLayer(sal_uInt16 nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel); + virtual std::unique_ptr<SdrUndoAction> CreateUndoDeleteLayer(sal_uInt16 nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel); // Page - virtual SdrUndoAction* CreateUndoDeletePage(SdrPage& rPage); - virtual SdrUndoAction* CreateUndoNewPage(SdrPage& rPage); - virtual SdrUndoAction* CreateUndoCopyPage(SdrPage& rPage); - virtual SdrUndoAction* CreateUndoSetPageNum(SdrPage& rNewPg, sal_uInt16 nOldPageNum1, sal_uInt16 nNewPageNum1); + virtual std::unique_ptr<SdrUndoAction> CreateUndoDeletePage(SdrPage& rPage); + virtual std::unique_ptr<SdrUndoAction> CreateUndoNewPage(SdrPage& rPage); + virtual std::unique_ptr<SdrUndoAction> CreateUndoCopyPage(SdrPage& rPage); + virtual std::unique_ptr<SdrUndoAction> CreateUndoSetPageNum(SdrPage& rNewPg, sal_uInt16 nOldPageNum1, sal_uInt16 nNewPageNum1); // Master page - virtual SdrUndoAction* CreateUndoPageRemoveMasterPage(SdrPage& rChangedPage); - virtual SdrUndoAction* CreateUndoPageChangeMasterPage(SdrPage& rChangedPage); + virtual std::unique_ptr<SdrUndoAction> CreateUndoPageRemoveMasterPage(SdrPage& rChangedPage); + virtual std::unique_ptr<SdrUndoAction> CreateUndoPageChangeMasterPage(SdrPage& rChangedPage); }; #endif // INCLUDED_SVX_SVDUNDO_HXX diff --git a/include/vcl/texteng.hxx b/include/vcl/texteng.hxx index 97a370747ce8..749146eb40d8 100644 --- a/include/vcl/texteng.hxx +++ b/include/vcl/texteng.hxx @@ -265,7 +265,7 @@ public: SfxUndoManager& GetUndoManager(); void UndoActionStart( sal_uInt16 nId = 0 ); void UndoActionEnd(); - void InsertUndo( TextUndo* pUndo, bool bTryMerge = false ); + void InsertUndo( std::unique_ptr<TextUndo> pUndo, bool bTryMerge = false ); bool IsInUndo() { return mbIsInUndo; } void SetIsInUndo( bool bInUndo ) { mbIsInUndo = bInUndo; } void ResetUndo(); diff --git a/reportdesign/source/core/inc/ReportUndoFactory.hxx b/reportdesign/source/core/inc/ReportUndoFactory.hxx index 9334372d1056..501bf68140b3 100644 --- a/reportdesign/source/core/inc/ReportUndoFactory.hxx +++ b/reportdesign/source/core/inc/ReportUndoFactory.hxx @@ -35,34 +35,34 @@ namespace rptui virtual ~OReportUndoFactory() override; // shapes - virtual SdrUndoAction* CreateUndoMoveObject( SdrObject& rObject, const Size& rDist ) override; - virtual SdrUndoAction* CreateUndoGeoObject( SdrObject& rObject ) override; - virtual SdrUndoAction* CreateUndoAttrObject( SdrObject& rObject, bool bStyleSheet1 = false, bool bSaveText = false ) override; - virtual SdrUndoAction* CreateUndoRemoveObject( SdrObject& rObject, bool bOrdNumDirect = false) override; - virtual SdrUndoAction* CreateUndoInsertObject( SdrObject& rObject, bool bOrdNumDirect = false) override; - virtual SdrUndoAction* CreateUndoDeleteObject( SdrObject& rObject, bool bOrdNumDirect = false) override; - virtual SdrUndoAction* CreateUndoNewObject( SdrObject& rObject, bool bOrdNumDirect = false) override; - virtual SdrUndoAction* CreateUndoCopyObject( SdrObject& rObject, bool bOrdNumDirect = false) override; + virtual std::unique_ptr<SdrUndoAction> CreateUndoMoveObject( SdrObject& rObject, const Size& rDist ) override; + virtual std::unique_ptr<SdrUndoAction> CreateUndoGeoObject( SdrObject& rObject ) override; + virtual std::unique_ptr<SdrUndoAction> CreateUndoAttrObject( SdrObject& rObject, bool bStyleSheet1 = false, bool bSaveText = false ) override; + virtual std::unique_ptr<SdrUndoAction> CreateUndoRemoveObject( SdrObject& rObject, bool bOrdNumDirect = false) override; + virtual std::unique_ptr<SdrUndoAction> CreateUndoInsertObject( SdrObject& rObject, bool bOrdNumDirect = false) override; + virtual std::unique_ptr<SdrUndoAction> CreateUndoDeleteObject( SdrObject& rObject, bool bOrdNumDirect = false) override; + virtual std::unique_ptr<SdrUndoAction> CreateUndoNewObject( SdrObject& rObject, bool bOrdNumDirect = false) override; + virtual std::unique_ptr<SdrUndoAction> CreateUndoCopyObject( SdrObject& rObject, bool bOrdNumDirect = false) override; - virtual SdrUndoAction* CreateUndoObjectOrdNum( SdrObject& rObject, sal_uInt32 nOldOrdNum1, sal_uInt32 nNewOrdNum1) override; + virtual std::unique_ptr<SdrUndoAction> CreateUndoObjectOrdNum( SdrObject& rObject, sal_uInt32 nOldOrdNum1, sal_uInt32 nNewOrdNum1) override; - virtual SdrUndoAction* CreateUndoReplaceObject( SdrObject& rOldObject, SdrObject& rNewObject, bool bOrdNumDirect = false ) override; - virtual SdrUndoAction* CreateUndoObjectLayerChange( SdrObject& rObject, SdrLayerID aOldLayer, SdrLayerID aNewLayer ) override; - virtual SdrUndoAction* CreateUndoObjectSetText( SdrObject& rNewObj, sal_Int32 nText ) override; + virtual std::unique_ptr<SdrUndoAction> CreateUndoReplaceObject( SdrObject& rOldObject, SdrObject& rNewObject, bool bOrdNumDirect = false ) override; + virtual std::unique_ptr<SdrUndoAction> CreateUndoObjectLayerChange( SdrObject& rObject, SdrLayerID aOldLayer, SdrLayerID aNewLayer ) override; + virtual std::unique_ptr<SdrUndoAction> CreateUndoObjectSetText( SdrObject& rNewObj, sal_Int32 nText ) override; // layer - virtual SdrUndoAction* CreateUndoNewLayer(sal_uInt16 nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel) override; - virtual SdrUndoAction* CreateUndoDeleteLayer(sal_uInt16 nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel) override; + virtual std::unique_ptr<SdrUndoAction> CreateUndoNewLayer(sal_uInt16 nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel) override; + virtual std::unique_ptr<SdrUndoAction> CreateUndoDeleteLayer(sal_uInt16 nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel) override; // page - virtual SdrUndoAction* CreateUndoDeletePage(SdrPage& rPage) override; - virtual SdrUndoAction* CreateUndoNewPage(SdrPage& rPage) override; - virtual SdrUndoAction* CreateUndoCopyPage(SdrPage& rPage) override; - virtual SdrUndoAction* CreateUndoSetPageNum(SdrPage& rNewPg, sal_uInt16 nOldPageNum1, sal_uInt16 nNewPageNum1) override; + virtual std::unique_ptr<SdrUndoAction> CreateUndoDeletePage(SdrPage& rPage) override; + virtual std::unique_ptr<SdrUndoAction> CreateUndoNewPage(SdrPage& rPage) override; + virtual std::unique_ptr<SdrUndoAction> CreateUndoCopyPage(SdrPage& rPage) override; + virtual std::unique_ptr<SdrUndoAction> CreateUndoSetPageNum(SdrPage& rNewPg, sal_uInt16 nOldPageNum1, sal_uInt16 nNewPageNum1) override; // master page - virtual SdrUndoAction* CreateUndoPageRemoveMasterPage(SdrPage& rChangedPage) override; - virtual SdrUndoAction* CreateUndoPageChangeMasterPage(SdrPage& rChangedPage) override; + virtual std::unique_ptr<SdrUndoAction> CreateUndoPageRemoveMasterPage(SdrPage& rChangedPage) override; + virtual std::unique_ptr<SdrUndoAction> CreateUndoPageChangeMasterPage(SdrPage& rChangedPage) override; }; diff --git a/reportdesign/source/core/sdr/ReportUndoFactory.cxx b/reportdesign/source/core/sdr/ReportUndoFactory.cxx index 750b9b7572ec..1033a3eabc2d 100644 --- a/reportdesign/source/core/sdr/ReportUndoFactory.cxx +++ b/reportdesign/source/core/sdr/ReportUndoFactory.cxx @@ -20,12 +20,13 @@ #include <RptObject.hxx> #include <UndoActions.hxx> #include <strings.hrc> +#include <o3tl/make_unique.hxx> namespace rptui { using namespace ::com::sun::star; -static SdrUndoAction* lcl_createUndo(SdrObject& rObject, Action _eAction, const char* pCommentId) +static std::unique_ptr<SdrUndoAction> lcl_createUndo(SdrObject& rObject, Action _eAction, const char* pCommentId) { OObjectBase* pObj = dynamic_cast<OObjectBase*>(&rObject); if ( !pObj ) @@ -33,12 +34,10 @@ static SdrUndoAction* lcl_createUndo(SdrObject& rObject, Action _eAction, const uno::Reference< report::XReportComponent> xReportComponent = pObj->getReportComponent(); uno::Reference< report::XSection> xSection = pObj->getSection(); uno::Reference< report::XGroup> xGroup = xSection->getGroup(); - SdrUndoAction* pUndo = nullptr; if ( xGroup.is() ) - pUndo = new OUndoGroupSectionAction(rObject.getSdrModelFromSdrObject(),_eAction,OGroupHelper::getMemberFunction(xSection),xGroup,xReportComponent,pCommentId); + return o3tl::make_unique<OUndoGroupSectionAction>(rObject.getSdrModelFromSdrObject(),_eAction,OGroupHelper::getMemberFunction(xSection),xGroup,xReportComponent,pCommentId); else - pUndo = new OUndoReportSectionAction(rObject.getSdrModelFromSdrObject(),_eAction,OReportHelper::getMemberFunction(xSection),xSection->getReportDefinition(),xReportComponent,pCommentId); - return pUndo; + return o3tl::make_unique<OUndoReportSectionAction>(rObject.getSdrModelFromSdrObject(),_eAction,OReportHelper::getMemberFunction(xSection),xSection->getReportDefinition(),xReportComponent,pCommentId); } @@ -50,104 +49,104 @@ OReportUndoFactory::~OReportUndoFactory() { } -SdrUndoAction* OReportUndoFactory::CreateUndoMoveObject( SdrObject& rObject, const Size& rDist ) +std::unique_ptr<SdrUndoAction> OReportUndoFactory::CreateUndoMoveObject( SdrObject& rObject, const Size& rDist ) { return m_pUndoFactory->CreateUndoMoveObject( rObject, rDist ); } -SdrUndoAction* OReportUndoFactory::CreateUndoGeoObject( SdrObject& rObject ) +std::unique_ptr<SdrUndoAction> OReportUndoFactory::CreateUndoGeoObject( SdrObject& rObject ) { return m_pUndoFactory->CreateUndoGeoObject( rObject ); } -SdrUndoAction* OReportUndoFactory::CreateUndoAttrObject( SdrObject& rObject, bool bStyleSheet1, bool bSaveText ) +std::unique_ptr<SdrUndoAction> OReportUndoFactory::CreateUndoAttrObject( SdrObject& rObject, bool bStyleSheet1, bool bSaveText ) { return m_pUndoFactory->CreateUndoAttrObject( rObject, bStyleSheet1, bSaveText ); } -SdrUndoAction* OReportUndoFactory::CreateUndoRemoveObject( SdrObject& rObject, bool bOrdNumDirect ) +std::unique_ptr<SdrUndoAction> OReportUndoFactory::CreateUndoRemoveObject( SdrObject& rObject, bool bOrdNumDirect ) { return m_pUndoFactory->CreateUndoRemoveObject( rObject, bOrdNumDirect ); } -SdrUndoAction* OReportUndoFactory::CreateUndoInsertObject( SdrObject& rObject, bool /*bOrdNumDirect*/ ) +std::unique_ptr<SdrUndoAction> OReportUndoFactory::CreateUndoInsertObject( SdrObject& rObject, bool /*bOrdNumDirect*/ ) { return lcl_createUndo(rObject,rptui::Inserted,RID_STR_UNDO_INSERT_CONTROL); } -SdrUndoAction* OReportUndoFactory::CreateUndoDeleteObject( SdrObject& rObject, bool /*bOrdNumDirect*/ ) +std::unique_ptr<SdrUndoAction> OReportUndoFactory::CreateUndoDeleteObject( SdrObject& rObject, bool /*bOrdNumDirect*/ ) { return lcl_createUndo(rObject,rptui::Removed,RID_STR_UNDO_DELETE_CONTROL); } -SdrUndoAction* OReportUndoFactory::CreateUndoNewObject( SdrObject& rObject, bool /*bOrdNumDirect*/ ) +std::unique_ptr<SdrUndoAction> OReportUndoFactory::CreateUndoNewObject( SdrObject& rObject, bool /*bOrdNumDirect*/ ) { return lcl_createUndo(rObject,rptui::Inserted,RID_STR_UNDO_INSERT_CONTROL); } -SdrUndoAction* OReportUndoFactory::CreateUndoCopyObject( SdrObject& rObject, bool bOrdNumDirect ) +std::unique_ptr<SdrUndoAction> OReportUndoFactory::CreateUndoCopyObject( SdrObject& rObject, bool bOrdNumDirect ) { return m_pUndoFactory->CreateUndoCopyObject( rObject, bOrdNumDirect ); } -SdrUndoAction* OReportUndoFactory::CreateUndoObjectOrdNum( SdrObject& rObject, sal_uInt32 nOldOrdNum1, sal_uInt32 nNewOrdNum1) +std::unique_ptr<SdrUndoAction> OReportUndoFactory::CreateUndoObjectOrdNum( SdrObject& rObject, sal_uInt32 nOldOrdNum1, sal_uInt32 nNewOrdNum1) { return m_pUndoFactory->CreateUndoObjectOrdNum( rObject, nOldOrdNum1, nNewOrdNum1 ); } -SdrUndoAction* OReportUndoFactory::CreateUndoReplaceObject( SdrObject& rOldObject, SdrObject& rNewObject, bool bOrdNumDirect ) +std::unique_ptr<SdrUndoAction> OReportUndoFactory::CreateUndoReplaceObject( SdrObject& rOldObject, SdrObject& rNewObject, bool bOrdNumDirect ) { return m_pUndoFactory->CreateUndoReplaceObject( rOldObject, rNewObject, bOrdNumDirect ); } -SdrUndoAction* OReportUndoFactory::CreateUndoObjectLayerChange( SdrObject& rObject, SdrLayerID aOldLayer, SdrLayerID aNewLayer ) +std::unique_ptr<SdrUndoAction> OReportUndoFactory::CreateUndoObjectLayerChange( SdrObject& rObject, SdrLayerID aOldLayer, SdrLayerID aNewLayer ) { return m_pUndoFactory->CreateUndoObjectLayerChange( rObject, aOldLayer, aNewLayer ); } -SdrUndoAction* OReportUndoFactory::CreateUndoObjectSetText( SdrObject& rNewObj, sal_Int32 nText ) +std::unique_ptr<SdrUndoAction> OReportUndoFactory::CreateUndoObjectSetText( SdrObject& rNewObj, sal_Int32 nText ) { return m_pUndoFactory->CreateUndoObjectSetText( rNewObj, nText ); } // layer -SdrUndoAction* OReportUndoFactory::CreateUndoNewLayer(sal_uInt16 nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel) +std::unique_ptr<SdrUndoAction> OReportUndoFactory::CreateUndoNewLayer(sal_uInt16 nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel) { return m_pUndoFactory->CreateUndoNewLayer( nLayerNum, rNewLayerAdmin, rNewModel ); } -SdrUndoAction* OReportUndoFactory::CreateUndoDeleteLayer(sal_uInt16 nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel) +std::unique_ptr<SdrUndoAction> OReportUndoFactory::CreateUndoDeleteLayer(sal_uInt16 nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel) { return m_pUndoFactory->CreateUndoDeleteLayer( nLayerNum, rNewLayerAdmin, rNewModel ); } // page -SdrUndoAction* OReportUndoFactory::CreateUndoDeletePage(SdrPage& rPage) +std::unique_ptr<SdrUndoAction> OReportUndoFactory::CreateUndoDeletePage(SdrPage& rPage) { return m_pUndoFactory->CreateUndoDeletePage(rPage); } -SdrUndoAction* OReportUndoFactory::CreateUndoNewPage(SdrPage& rPage) +std::unique_ptr<SdrUndoAction> OReportUndoFactory::CreateUndoNewPage(SdrPage& rPage) { return m_pUndoFactory->CreateUndoNewPage( rPage ); } -SdrUndoAction* OReportUndoFactory::CreateUndoCopyPage(SdrPage& rPage) +std::unique_ptr<SdrUndoAction> OReportUndoFactory::CreateUndoCopyPage(SdrPage& rPage) { return m_pUndoFactory->CreateUndoCopyPage( rPage ); } -SdrUndoAction* OReportUndoFactory::CreateUndoSetPageNum(SdrPage& rNewPg, sal_uInt16 nOldPageNum1, sal_uInt16 nNewPageNum1) +std::unique_ptr<SdrUndoAction> OReportUndoFactory::CreateUndoSetPageNum(SdrPage& rNewPg, sal_uInt16 nOldPageNum1, sal_uInt16 nNewPageNum1) { return m_pUndoFactory->CreateUndoSetPageNum( rNewPg, nOldPageNum1, nNewPageNum1 ); } // master page -SdrUndoAction* OReportUndoFactory::CreateUndoPageRemoveMasterPage(SdrPage& rChangedPage) +std::unique_ptr<SdrUndoAction> OReportUndoFactory::CreateUndoPageRemoveMasterPage(SdrPage& rChangedPage) { return m_pUndoFactory->CreateUndoPageRemoveMasterPage( rChangedPage ); } -SdrUndoAction* OReportUndoFactory::CreateUndoPageChangeMasterPage(SdrPage& rChangedPage) +std::unique_ptr<SdrUndoAction> OReportUndoFactory::CreateUndoPageChangeMasterPage(SdrPage& rChangedPage) { return m_pUndoFactory->CreateUndoPageChangeMasterPage(rChangedPage); } diff --git a/reportdesign/source/core/sdr/UndoEnv.cxx b/reportdesign/source/core/sdr/UndoEnv.cxx index cb42c8d086fb..db5398ffd7dc 100644 --- a/reportdesign/source/core/sdr/UndoEnv.cxx +++ b/reportdesign/source/core/sdr/UndoEnv.cxx @@ -44,6 +44,7 @@ #include <dbaccess/dbsubcomponentcontroller.hxx> #include <svx/unoshape.hxx> #include <osl/mutex.hxx> +#include <o3tl/make_unique.hxx> namespace rptui { @@ -310,7 +311,7 @@ void SAL_CALL OXUndoEnvironment::propertyChange( const PropertyChangeEvent& _rEv // add their undo actions out-of-order SolarMutexGuard aSolarGuard; - ORptUndoPropertyAction* pUndo = nullptr; + std::unique_ptr<ORptUndoPropertyAction> pUndo; try { uno::Reference< report::XSection> xSection( xSet, uno::UNO_QUERY ); @@ -318,9 +319,9 @@ void SAL_CALL OXUndoEnvironment::propertyChange( const PropertyChangeEvent& _rEv { uno::Reference< report::XGroup> xGroup = xSection->getGroup(); if ( xGroup.is() ) - pUndo = new OUndoPropertyGroupSectionAction( m_pImpl->m_rModel, _rEvent, OGroupHelper::getMemberFunction( xSection ), xGroup ); + pUndo.reset(new OUndoPropertyGroupSectionAction( m_pImpl->m_rModel, _rEvent, OGroupHelper::getMemberFunction( xSection ), xGroup )); else - pUndo = new OUndoPropertyReportSectionAction( m_pImpl->m_rModel, _rEvent, OReportHelper::getMemberFunction( xSection ), xSection->getReportDefinition() ); + pUndo.reset(new OUndoPropertyReportSectionAction( m_pImpl->m_rModel, _rEvent, OReportHelper::getMemberFunction( xSection ), xSection->getReportDefinition() )); } } catch(const Exception&) @@ -329,9 +330,9 @@ void SAL_CALL OXUndoEnvironment::propertyChange( const PropertyChangeEvent& _rEv } if ( pUndo == nullptr ) - pUndo = new ORptUndoPropertyAction( m_pImpl->m_rModel, _rEvent ); + pUndo.reset(new ORptUndoPropertyAction( m_pImpl->m_rModel, _rEvent )); - m_pImpl->m_rModel.GetSdrUndoManager()->AddUndoAction( pUndo ); + m_pImpl->m_rModel.GetSdrUndoManager()->AddUndoAction( std::move(pUndo) ); pController->InvalidateAll(); } @@ -391,7 +392,7 @@ void SAL_CALL OXUndoEnvironment::elementInserted(const ContainerEvent& evt) if ( xContainer.is() ) { m_pImpl->m_rModel.GetSdrUndoManager()->AddUndoAction( - new OUndoContainerAction( m_pImpl->m_rModel, rptui::Inserted, xContainer.get(), + o3tl::make_unique<OUndoContainerAction>( m_pImpl->m_rModel, rptui::Inserted, xContainer.get(), xIface, RID_STR_UNDO_ADDFUNCTION ) ); } } @@ -457,7 +458,7 @@ void SAL_CALL OXUndoEnvironment::elementRemoved(const ContainerEvent& evt) uno::Reference< report::XFunctions> xFunctions(evt.Source,uno::UNO_QUERY); if ( xFunctions.is() ) { - m_pImpl->m_rModel.GetSdrUndoManager()->AddUndoAction( new OUndoContainerAction( + m_pImpl->m_rModel.GetSdrUndoManager()->AddUndoAction( o3tl::make_unique<OUndoContainerAction>( m_pImpl->m_rModel, rptui::Removed, xFunctions.get(), xIface, RID_STR_UNDO_ADDFUNCTION ) ); } } diff --git a/reportdesign/source/ui/inc/ReportController.hxx b/reportdesign/source/ui/inc/ReportController.hxx index 3cca358adc0b..e956cb434c97 100644 --- a/reportdesign/source/ui/inc/ReportController.hxx +++ b/reportdesign/source/ui/inc/ReportController.hxx @@ -455,7 +455,7 @@ namespace rptui SfxUndoManager& getUndoManager() const; void clearUndoManager() const; - void addUndoAction( SfxUndoAction* i_pAction ); + void addUndoAction( std::unique_ptr<SfxUndoAction> i_pAction ); }; } #endif // INCLUDED_REPORTDESIGN_SOURCE_UI_INC_REPORTCONTROLLER_HXX diff --git a/reportdesign/source/ui/report/ReportController.cxx b/reportdesign/source/ui/report/ReportController.cxx index 085160518c63..e79d4c6a361f 100644 --- a/reportdesign/source/ui/report/ReportController.cxx +++ b/reportdesign/source/ui/report/ReportController.cxx @@ -3771,13 +3771,13 @@ void OReportController::switchReportSection(const sal_Int16 _nId) const OUString sUndoAction(RptResId(bSwitchOn ? RID_STR_UNDO_ADD_REPORTHEADERFOOTER : RID_STR_UNDO_REMOVE_REPORTHEADERFOOTER)); pUndoContext.reset( new UndoContext( getUndoManager(), sUndoAction ) ); - addUndoAction(new OReportSectionUndo(*(m_aReportModel),SID_REPORTHEADER_WITHOUT_UNDO + addUndoAction(o3tl::make_unique<OReportSectionUndo>(*(m_aReportModel),SID_REPORTHEADER_WITHOUT_UNDO ,::std::mem_fn(&OReportHelper::getReportHeader) ,m_xReportDefinition ,bSwitchOn ? Inserted : Removed )); - addUndoAction(new OReportSectionUndo(*(m_aReportModel),SID_REPORTFOOTER_WITHOUT_UNDO + addUndoAction(o3tl::make_unique<OReportSectionUndo>(*(m_aReportModel),SID_REPORTFOOTER_WITHOUT_UNDO ,::std::mem_fn(&OReportHelper::getReportFooter) ,m_xReportDefinition ,bSwitchOn ? Inserted : Removed @@ -3818,14 +3818,14 @@ void OReportController::switchPageSection(const sal_Int16 _nId) const OUString sUndoAction(RptResId(bSwitchOn ? RID_STR_UNDO_ADD_REPORTHEADERFOOTER : RID_STR_UNDO_REMOVE_REPORTHEADERFOOTER)); pUndoContext.reset( new UndoContext( getUndoManager(), sUndoAction ) ); - addUndoAction(new OReportSectionUndo(*m_aReportModel + addUndoAction(o3tl::make_unique<OReportSectionUndo>(*m_aReportModel ,SID_PAGEHEADER_WITHOUT_UNDO ,::std::mem_fn(&OReportHelper::getPageHeader) ,m_xReportDefinition ,bSwitchOn ? Inserted : Removed )); - addUndoAction(new OReportSectionUndo(*m_aReportModel + addUndoAction(o3tl::make_unique<OReportSectionUndo>(*m_aReportModel ,SID_PAGEFOOTER_WITHOUT_UNDO ,::std::mem_fn(&OReportHelper::getPageFooter) ,m_xReportDefinition @@ -3872,7 +3872,7 @@ void OReportController::modifyGroup(const bool _bAppend, const Sequence< Propert rUndoEnv.AddElement( xGroup->getFunctions() ); } - addUndoAction( new OGroupUndo( + addUndoAction( o3tl::make_unique<OGroupUndo>( *m_aReportModel, _bAppend ? RID_STR_UNDO_APPEND_GROUP : RID_STR_UNDO_REMOVE_GROUP, _bAppend ? Inserted : Removed, @@ -3906,7 +3906,7 @@ void OReportController::createGroupSection(const bool _bUndo,const bool _bHeader { const OXUndoEnvironment::OUndoEnvLock aLock(m_aReportModel->GetUndoEnv()); if ( _bUndo ) - addUndoAction(new OGroupSectionUndo(*m_aReportModel + addUndoAction(o3tl::make_unique<OGroupSectionUndo>(*m_aReportModel ,_bHeader ? SID_GROUPHEADER_WITHOUT_UNDO : SID_GROUPFOOTER_WITHOUT_UNDO ,_bHeader ? ::std::mem_fn(&OGroupHelper::getHeader) : ::std::mem_fn(&OGroupHelper::getFooter) ,xGroup @@ -4362,9 +4362,9 @@ void OReportController::clearUndoManager() const } -void OReportController::addUndoAction( SfxUndoAction* i_pAction ) +void OReportController::addUndoAction( std::unique_ptr<SfxUndoAction> i_pAction ) { - getUndoManager().AddUndoAction( i_pAction ); + getUndoManager().AddUndoAction( std::move(i_pAction) ); InvalidateFeature( SID_UNDO ); InvalidateFeature( SID_REDO ); diff --git a/reportdesign/source/ui/report/SectionView.cxx b/reportdesign/source/ui/report/SectionView.cxx index ea01291b81f6..c1c3c48bd853 100644 --- a/reportdesign/source/ui/report/SectionView.cxx +++ b/reportdesign/source/ui/report/SectionView.cxx @@ -29,6 +29,7 @@ #include <strings.hxx> #include <tools/debug.hxx> #include <tools/diagnose_ex.h> +#include <o3tl/make_unique.hxx> namespace rptui { @@ -176,7 +177,7 @@ void OSectionView::SetMarkedToLayer( SdrLayerID _nLayerNo ) SdrObject* pObj = rMark.GetMark(i)->GetMarkedSdrObj(); if ( dynamic_cast< const OCustomShape *>( pObj ) != nullptr ) { - AddUndo( new SdrUndoObjectLayerChange( *pObj, pObj->GetLayer(), _nLayerNo) ); + AddUndo( o3tl::make_unique<SdrUndoObjectLayerChange>( *pObj, pObj->GetLayer(), _nLayerNo) ); pObj->SetLayer( _nLayerNo ); OObjectBase& rBaseObj = dynamic_cast<OObjectBase&>(*pObj); try diff --git a/sc/source/ui/docshell/arealink.cxx b/sc/source/ui/docshell/arealink.cxx index d0797a453873..6461f802c126 100644 --- a/sc/source/ui/docshell/arealink.cxx +++ b/sc/source/ui/docshell/arealink.cxx @@ -140,7 +140,7 @@ void ScAreaLink::Closed() bool bUndo (rDoc.IsUndoEnabled()); if (bAddUndo && bUndo) { - m_pDocSh->GetUndoManager()->AddUndoAction( new ScUndoRemoveAreaLink( m_pDocSh, + m_pDocSh->GetUndoManager()->AddUndoAction( o3tl::make_unique<ScUndoRemoveAreaLink>( m_pDocSh, aFileName, aFilterName, aOptions, aSourceArea, aDestArea, GetRefreshDelay() ) ); @@ -417,7 +417,7 @@ bool ScAreaLink::Refresh( const OUString& rNewFile, const OUString& rNewFilter, rDoc.CopyToDocument(aNewRange, InsertDeleteFlags::ALL & ~InsertDeleteFlags::NOTE, false, *pRedoDoc); m_pDocSh->GetUndoManager()->AddUndoAction( - new ScUndoUpdateAreaLink( m_pDocSh, + o3tl::make_unique<ScUndoUpdateAreaLink>( m_pDocSh, aFileName, aFilterName, aOptions, aSourceArea, aOldRange, GetRefreshDelay(), aNewUrl, rNewFilter, aNewOpt, diff --git a/sc/source/ui/docshell/dbdocfun.cxx b/sc/source/ui/docshell/dbdocfun.cxx index d82ce8b2ca39..b374d94cd34e 100644 --- a/sc/source/ui/docshell/dbdocfun.cxx +++ b/sc/source/ui/docshell/dbdocfun.cxx @@ -106,7 +106,7 @@ bool ScDBDocFunc::AddDBRange( const OUString& rName, const ScRange& rRange ) if (bUndo) { rDocShell.GetUndoManager()->AddUndoAction( - new ScUndoDBData( &rDocShell, std::move(pUndoColl), + o3tl::make_unique<ScUndoDBData>( &rDocShell, std::move(pUndoColl), o3tl::make_unique<ScDBCollection>( *pDocColl ) ) ); } @@ -139,7 +139,7 @@ bool ScDBDocFunc::DeleteDBRange(const OUString& rName) if (bUndo) { rDocShell.GetUndoManager()->AddUndoAction( - new ScUndoDBData( &rDocShell, std::move(pUndoColl), + o3tl::make_unique<ScUndoDBData>( &rDocShell, std::move(pUndoColl), o3tl::make_unique<ScDBCollection>( *pDocColl ) ) ); } @@ -183,7 +183,7 @@ bool ScDBDocFunc::RenameDBRange( const OUString& rOld, const OUString& rNew ) if (bUndo) { rDocShell.GetUndoManager()->AddUndoAction( - new ScUndoDBData( &rDocShell, std::move(pUndoColl), + o3tl::make_unique<ScUndoDBData>( &rDocShell, std::move(pUndoColl), o3tl::make_unique<ScDBCollection>( *pDocColl ) ) ); } else @@ -234,7 +234,7 @@ void ScDBDocFunc::ModifyDBData( const ScDBData& rNewData ) if (bUndo) { rDocShell.GetUndoManager()->AddUndoAction( - new ScUndoDBData( &rDocShell, std::move(pUndoColl), + o3tl::make_unique<ScUndoDBData>( &rDocShell, std::move(pUndoColl), o3tl::make_unique<ScDBCollection>( *pDocColl ) ) ); } @@ -276,7 +276,7 @@ void ScDBDocFunc::ModifyAllDBData( const ScDBCollection& rNewColl, const std::ve if (bRecord) { rDocShell.GetUndoManager()->AddUndoAction( - new ScUndoDBData(&rDocShell, std::move(pUndoColl), + o3tl::make_unique<ScUndoDBData>(&rDocShell, std::move(pUndoColl), o3tl::make_unique<ScDBCollection>(rNewColl))); } } @@ -443,7 +443,7 @@ bool ScDBDocFunc::RepeatDB( const OUString& rDBName, bool bApi, bool bIsUnnamed, } rDocShell.GetUndoManager()->AddUndoAction( - new ScUndoRepeatDB( &rDocShell, nTab, + o3tl::make_unique<ScUndoRepeatDB>( &rDocShell, nTab, nStartCol, nStartRow, nEndCol, nEndRow, nNewEndRow, //nCurX, nCurY, @@ -571,8 +571,8 @@ bool ScDBDocFunc::Sort( SCTAB nTab, const ScSortParam& rSortParam, if (bRecord) { // Set up an undo object. - sc::UndoSort* pUndoAction = new sc::UndoSort(&rDocShell, aUndoParam); - rDocShell.GetUndoManager()->AddUndoAction(pUndoAction); + rDocShell.GetUndoManager()->AddUndoAction( + o3tl::make_unique<sc::UndoSort>(&rDocShell, aUndoParam)); } pDBData->SetSortParam(rSortParam); @@ -930,7 +930,7 @@ bool ScDBDocFunc::Query( SCTAB nTab, const ScQueryParam& rQueryParam, { // create undo action after executing, because of drawing layer undo rDocShell.GetUndoManager()->AddUndoAction( - new ScUndoQuery( &rDocShell, nTab, rQueryParam, std::move(pUndoDoc), std::move(pUndoDB), + o3tl::make_unique<ScUndoQuery>( &rDocShell, nTab, rQueryParam, std::move(pUndoDoc), std::move(pUndoDB), pOld, bDoSize, pAdvSource ) ); } @@ -1108,7 +1108,7 @@ void ScDBDocFunc::DoSubTotals( SCTAB nTab, const ScSubTotalParam& rParam, { // ScDBData* pUndoDBData = pDBData ? new ScDBData( *pDBData ) : NULL; rDocShell.GetUndoManager()->AddUndoAction( - new ScUndoSubTotals( &rDocShell, nTab, + o3tl::make_unique<ScUndoSubTotals>( &rDocShell, nTab, rParam, aNewParam.nRow2, std::move(pUndoDoc), std::move(pUndoTab), // pUndoDBData, std::move(pUndoRange), std::move(pUndoDB) ) ); @@ -1325,7 +1325,7 @@ bool ScDBDocFunc::DataPilotUpdate( ScDPObject* pOldObj, const ScDPObject* pNewOb if (bRecord) { rDocShell.GetUndoManager()->AddUndoAction( - new ScUndoDataPilot( + o3tl::make_unique<ScUndoDataPilot>( &rDocShell, std::move(pOldUndoDoc), std::move(pNewUndoDoc), &aUndoDPObj, pOldObj, bAllowMove)); } @@ -1370,7 +1370,7 @@ bool ScDBDocFunc::RemovePivotTable(ScDPObject& rDPObj, bool bRecord, bool bApi) for (SdrOle2Obj* pChartObject : aListOfObjects) { rDoc.GetChartListenerCollection()->removeByName(pChartObject->GetName()); - pModel->AddUndo(new SdrUndoDelObj(*pChartObject)); + pModel->AddUndo(o3tl::make_unique<SdrUndoDelObj>(*pChartObject)); pChartObject->getSdrPageFromSdrObject()->RemoveObject(pChartObject->GetOrdNum()); } } @@ -1409,7 +1409,7 @@ bool ScDBDocFunc::RemovePivotTable(ScDPObject& rDPObj, bool bRecord, bool bApi) if (bRecord) { rDocShell.GetUndoManager()->AddUndoAction( - new ScUndoDataPilot( + o3tl::make_unique<ScUndoDataPilot>( &rDocShell, std::move(pOldUndoDoc), nullptr, pUndoDPObj.get(), nullptr, false)); // pUndoDPObj is copied @@ -1522,7 +1522,7 @@ bool ScDBDocFunc::CreatePivotTable(const ScDPObject& rDPObj, bool bRecord, bool if (bRecord) { rDocShell.GetUndoManager()->AddUndoAction( - new ScUndoDataPilot(&rDocShell, nullptr, std::move(pNewUndoDoc), nullptr, &rDestObj, false)); + o3tl::make_unique<ScUndoDataPilot>(&rDocShell, nullptr, std::move(pNewUndoDoc), nullptr, &rDestObj, false)); } // notify API objects @@ -1597,7 +1597,7 @@ bool ScDBDocFunc::UpdatePivotTable(ScDPObject& rDPObj, bool bRecord, bool bApi) if (bRecord) { rDocShell.GetUndoManager()->AddUndoAction( - new ScUndoDataPilot( + o3tl::make_unique<ScUndoDataPilot>( &rDocShell, std::move(pOldUndoDoc), std::move(pNewUndoDoc), &aUndoDPObj, &rDPObj, false)); } diff --git a/sc/source/ui/docshell/dbdocimp.cxx b/sc/source/ui/docshell/dbdocimp.cxx index 49c1cf8d542b..a83b0c376ab5 100644 --- a/sc/source/ui/docshell/dbdocimp.cxx +++ b/sc/source/ui/docshell/dbdocimp.cxx @@ -583,7 +583,7 @@ bool ScDBDocFunc::DoImport( SCTAB nTab, const ScImportParam& rParam, std::unique_ptr<ScDBData> pRedoDBData(pDBData ? new ScDBData( *pDBData ) : nullptr); rDocShell.GetUndoManager()->AddUndoAction( - new ScUndoImportData( &rDocShell, nTab, + o3tl::make_unique<ScUndoImportData>( &rDocShell, nTab, rParam, nUndoEndCol, nUndoEndRow, nFormulaCols, std::move(pUndoDoc), std::move(pRedoDoc), diff --git a/sc/source/ui/docshell/docfunc.cxx b/sc/source/ui/docshell/docfunc.cxx index 58b6c92b4ba3..0d25a473db1a 100644 --- a/sc/source/ui/docshell/docfunc.cxx +++ b/sc/source/ui/docshell/docfunc.cxx @@ -110,7 +110,7 @@ void ScDocFunc::NotifyDrawUndo( std::unique_ptr<SdrUndoAction> pUndoAction) if( pDrawLayer && pDrawLayer->IsRecording() ) pDrawLayer->AddCalcUndo( std::move(pUndoAction) ); else - rDocShell.GetUndoManager()->AddUndoAction( new ScUndoDraw( std::move(pUndoAction), &rDocShell ) ); + rDocShell.GetUndoManager()->AddUndoAction( o3tl::make_unique<ScUndoDraw>( std::move(pUndoAction), &rDocShell ) ); rDocShell.SetDrawModified(); // the affected sheet isn't known, so all stream positions are invalidated @@ -191,7 +191,7 @@ bool ScDocFunc::DetectiveAddPred(const ScAddress& rPos) if (bUndo) { rDocShell.GetUndoManager()->AddUndoAction( - new ScUndoDetective( &rDocShell, std::move(pUndo), &aOperation ) ); + o3tl::make_unique<ScUndoDetective>( &rDocShell, std::move(pUndo), &aOperation ) ); } aModificator.SetDocumentModified(); SfxBindings* pBindings = rDocShell.GetViewBindings(); @@ -230,7 +230,7 @@ bool ScDocFunc::DetectiveDelPred(const ScAddress& rPos) if (bUndo) { rDocShell.GetUndoManager()->AddUndoAction( - new ScUndoDetective( &rDocShell, std::move(pUndo), &aOperation ) ); + o3tl::make_unique<ScUndoDetective>( &rDocShell, std::move(pUndo), &aOperation ) ); } aModificator.SetDocumentModified(); SfxBindings* pBindings = rDocShell.GetViewBindings(); @@ -267,7 +267,7 @@ bool ScDocFunc::DetectiveAddSucc(const ScAddress& rPos) if (bUndo) { rDocShell.GetUndoManager()->AddUndoAction( - new ScUndoDetective( &rDocShell, std::move(pUndo), &aOperation ) ); + o3tl::make_unique<ScUndoDetective>( &rDocShell, std::move(pUndo), &aOperation ) ); } aModificator.SetDocumentModified(); SfxBindings* pBindings = rDocShell.GetViewBindings(); @@ -306,7 +306,7 @@ bool ScDocFunc::DetectiveDelSucc(const ScAddress& rPos) if (bUndo) { rDocShell.GetUndoManager()->AddUndoAction( - new ScUndoDetective( &rDocShell, std::move(pUndo), &aOperation ) ); + o3tl::make_unique<ScUndoDetective>( &rDocShell, std::move(pUndo), &aOperation ) ); } aModificator.SetDocumentModified(); SfxBindings* pBindings = rDocShell.GetViewBindings(); @@ -343,7 +343,7 @@ bool ScDocFunc::DetectiveAddError(const ScAddress& rPos) if (bUndo) { rDocShell.GetUndoManager()->AddUndoAction( - new ScUndoDetective( &rDocShell, std::move(pUndo), &aOperation ) ); + o3tl::make_unique<ScUndoDetective>( &rDocShell, std::move(pUndo), &aOperation ) ); } aModificator.SetDocumentModified(); SfxBindings* pBindings = rDocShell.GetViewBindings(); @@ -381,7 +381,7 @@ bool ScDocFunc::DetectiveMarkInvalid(SCTAB nTab) if (pUndo && bUndo) { pUndo->SetComment( ScResId( STR_UNDO_DETINVALID ) ); - rDocShell.GetUndoManager()->AddUndoAction( pUndo.release() ); + rDocShell.GetUndoManager()->AddUndoAction( std::move(pUndo) ); } aModificator.SetDocumentModified(); if ( bOverflow ) @@ -425,7 +425,7 @@ bool ScDocFunc::DetectiveDelAll(SCTAB nTab) if (bUndo) { rDocShell.GetUndoManager()->AddUndoAction( - new ScUndoDetective( &rDocShell, std::move(pUndo), nullptr, std::move(pUndoList) ) ); + o3tl::make_unique<ScUndoDetective>( &rDocShell, std::move(pUndo), nullptr, std::move(pUndoList) ) ); } aModificator.SetDocumentModified(); SfxBindings* pBindings = rDocShell.GetViewBindings(); @@ -496,8 +496,8 @@ bool ScDocFunc::DetectiveRefresh( bool bAutomatic ) pUndo->SetComment( ScResId( STR_UNDO_DETREFRESH ) ); // associate with the last action rDocShell.GetUndoManager()->AddUndoAction( - new ScUndoDraw( std::move(pUndo), &rDocShell ), - bAutomatic ); + o3tl::make_unique<ScUndoDraw>( std::move(pUndo), &rDocShell ), + bAutomatic ); } } rDocShell.SetDrawModified(); @@ -745,7 +745,7 @@ bool ScDocFunc::TransliterateText( const ScMarkData& rMark, TransliterationFlags rDoc.CopyToDocument(aCopyRange, InsertDeleteFlags::CONTENTS, true, *pUndoDoc, &aMultiMark); rDocShell.GetUndoManager()->AddUndoAction( - new ScUndoTransliterate( &rDocShell, aMultiMark, std::move(pUndoDoc), nType ) ); + o3tl::make_unique<ScUndoTransliterate>( &rDocShell, aMultiMark, std::move(pUndoDoc), nType ) ); } rDoc.TransliterateText( aMultiMark, nType ); @@ -802,7 +802,7 @@ bool ScDocFunc::SetNormalString( bool& o_rbNumFmtSet, const ScAddress& rPos, con { // because of ChangeTracking, UndoAction can be created only after SetString was called rDocShell.GetUndoManager()->AddUndoAction( - new ScUndoEnterData(&rDocShell, rPos, aOldValues, rText, nullptr)); + o3tl::make_unique<ScUndoEnterData>(&rDocShell, rPos, aOldValues, rText, nullptr)); } if ( bEditDeleted || rDoc.HasAttrib( ScRange(rPos), HasAttrFlags::NeedHeight ) ) @@ -837,7 +837,7 @@ bool ScDocFunc::SetValueCell( const ScAddress& rPos, double fVal, bool bInteract SfxUndoManager* pUndoMgr = rDocShell.GetUndoManager(); ScCellValue aNewVal; aNewVal.assign(rDoc, rPos); - pUndoMgr->AddUndoAction(new ScUndoSetCell(&rDocShell, rPos, aOldVal, aNewVal)); + pUndoMgr->AddUndoAction(o3tl::make_unique<ScUndoSetCell>(&rDocShell, rPos, aOldVal, aNewVal)); } if (bHeight) @@ -869,11 +869,11 @@ void ScDocFunc::SetValueCells( const ScAddress& rPos, const std::vector<double>& if (rDoc.IsUndoEnabled()) { - sc::UndoSetCells* pUndoObj = new sc::UndoSetCells(&rDocShell, rPos); + std::unique_ptr<sc::UndoSetCells> pUndoObj(new sc::UndoSetCells(&rDocShell, rPos)); rDoc.TransferCellValuesTo(rPos, aVals.size(), pUndoObj->GetOldValues()); pUndoObj->SetNewValues(aVals); SfxUndoManager* pUndoMgr = rDocShell.GetUndoManager(); - pUndoMgr->AddUndoAction(pUndoObj); + pUndoMgr->AddUndoAction(std::move(pUndoObj)); } rDoc.SetValues(rPos, aVals); @@ -907,7 +907,7 @@ bool ScDocFunc::SetStringCell( const ScAddress& rPos, const OUString& rStr, bool SfxUndoManager* pUndoMgr = rDocShell.GetUndoManager(); ScCellValue aNewVal; aNewVal.assign(rDoc, rPos); - pUndoMgr->AddUndoAction(new ScUndoSetCell(&rDocShell, rPos, aOldVal, aNewVal)); + pUndoMgr->AddUndoAction(o3tl::make_unique<ScUndoSetCell>(&rDocShell, rPos, aOldVal, aNewVal)); } if (bHeight) @@ -942,7 +942,7 @@ bool ScDocFunc::SetEditCell( const ScAddress& rPos, const EditTextObject& rStr, SfxUndoManager* pUndoMgr = rDocShell.GetUndoManager(); ScCellValue aNewVal; aNewVal.assign(rDoc, rPos); - pUndoMgr->AddUndoAction(new ScUndoSetCell(&rDocShell, rPos, aOldVal, aNewVal)); + pUndoMgr->AddUndoAction(o3tl::make_unique<ScUndoSetCell>(&rDocShell, rPos, aOldVal, aNewVal)); } if (bHeight) @@ -1006,7 +1006,7 @@ bool ScDocFunc::SetFormulaCell( const ScAddress& rPos, ScFormulaCell* pCell, boo SfxUndoManager* pUndoMgr = rDocShell.GetUndoManager(); ... etc. - the rest is truncated _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
