From 9aa36a1ad39e37c372cc833a44fba450b8cc30cd Mon Sep 17 00:00:00 2001 From: Kohei Yoshida Date: Wed, 8 Oct 2014 23:21:17 -0400 Subject: Move this one to a common place too. Change-Id: I7f4e007cfc861dc323b42be353c6ba11091e8fa1 --- sc/source/ui/docshell/docfunc.cxx | 8 +++----- sc/source/ui/docshell/docfuncutil.cxx | 15 +++++++++++++++ sc/source/ui/inc/docfuncutil.hxx | 8 ++++++++ sc/source/ui/view/viewfunc.cxx | 9 +++------ 4 files changed, 29 insertions(+), 11 deletions(-) diff --git a/sc/source/ui/docshell/docfunc.cxx b/sc/source/ui/docshell/docfunc.cxx index 6de4d7a86e2d..c529527cd46b 100644 --- a/sc/source/ui/docshell/docfunc.cxx +++ b/sc/source/ui/docshell/docfunc.cxx @@ -637,11 +637,9 @@ bool ScDocFunc::DeleteContents( const ScMarkData& rMark, InsertDeleteFlags nFlag // add undo action after drawing undo is complete (objects and note captions) if( bRecord ) { - ScUndoDeleteContents* pUndo = - new ScUndoDeleteContents( - &rDocShell, aMultiMark, aExtendedRange, pUndoDoc, bMulti, nFlags, bDrawUndo); - rDocShell.GetUndoManager()->AddUndoAction(pUndo); - pUndo->SetDataSpans(pDataSpans); + sc::DocFuncUtil::addDeleteContentsUndo( + rDocShell.GetUndoManager(), &rDocShell, aMultiMark, aExtendedRange, + pUndoDoc, nFlags, pDataSpans, bMulti, bDrawUndo); } if (!AdjustRowHeight( aExtendedRange )) diff --git a/sc/source/ui/docshell/docfuncutil.cxx b/sc/source/ui/docshell/docfuncutil.cxx index 35f3fb2b35af..1adb1355d556 100644 --- a/sc/source/ui/docshell/docfuncutil.cxx +++ b/sc/source/ui/docshell/docfuncutil.cxx @@ -22,6 +22,7 @@ #include #include #include +#include #include @@ -70,6 +71,20 @@ ScDocument* DocFuncUtil::createDeleteContentsUndoDoc( return pUndoDoc.release(); } +void DocFuncUtil::addDeleteContentsUndo( + svl::IUndoManager* pUndoMgr, ScDocShell* pDocSh, const ScMarkData& rMark, + const ScRange& rRange, ScDocument* pUndoDoc, InsertDeleteFlags nFlags, + const boost::shared_ptr& pSpans, + bool bMulti, bool bDrawUndo ) +{ + std::unique_ptr pUndo( + new ScUndoDeleteContents( + pDocSh, rMark, rRange, pUndoDoc, bMulti, nFlags, bDrawUndo)); + pUndo->SetDataSpans(pSpans); + + pUndoMgr->AddUndoAction(pUndo.release()); +} + ScSimpleUndo::DataSpansType* DocFuncUtil::getNonEmptyCellSpans( const ScDocument& rDoc, const ScMarkData& rMark, const ScRange& rRange ) { diff --git a/sc/source/ui/inc/docfuncutil.hxx b/sc/source/ui/inc/docfuncutil.hxx index 553bab684a96..65bf820526be 100644 --- a/sc/source/ui/inc/docfuncutil.hxx +++ b/sc/source/ui/inc/docfuncutil.hxx @@ -10,6 +10,8 @@ #include +#include + class ScDocument; class ScMarkData; class ScRange; @@ -27,6 +29,12 @@ public: ScDocument& rDoc, const ScMarkData& rMark, const ScRange& rRange, InsertDeleteFlags nFlags, bool bOnlyMarked ); + static void addDeleteContentsUndo( + svl::IUndoManager* pUndoMgr, ScDocShell* pDocSh, const ScMarkData& rMark, + const ScRange& rRange, ScDocument* pUndoDoc, InsertDeleteFlags nFlags, + const boost::shared_ptr& pSpans, + bool bMulti, bool bDrawUndo ); + static ScSimpleUndo::DataSpansType* getNonEmptyCellSpans( const ScDocument& rDoc, const ScMarkData& rMark, const ScRange& rRange ); }; diff --git a/sc/source/ui/view/viewfunc.cxx b/sc/source/ui/view/viewfunc.cxx index cb3db19165a8..f1ab1ebd8dba 100644 --- a/sc/source/ui/view/viewfunc.cxx +++ b/sc/source/ui/view/viewfunc.cxx @@ -1850,12 +1850,9 @@ void ScViewFunc::DeleteContents( InsertDeleteFlags nFlags, bool bRecord ) if ( bRecord ) { - ScUndoDeleteContents* pUndo = - new ScUndoDeleteContents( - pDocSh, aFuncMark, aExtendedRange, pUndoDoc, bMulti, nFlags, bDrawUndo); - pUndo->SetDataSpans(pDataSpans); - - pDocSh->GetUndoManager()->AddUndoAction(pUndo); + sc::DocFuncUtil::addDeleteContentsUndo( + pDocSh->GetUndoManager(), pDocSh, aFuncMark, aExtendedRange, pUndoDoc, + nFlags, pDataSpans, bMulti, bDrawUndo); } if (!AdjustRowHeight( aExtendedRange.aStart.Row(), aExtendedRange.aEnd.Row() )) -- cgit