From d3bdadad61d95cc802c869d989ed94326a7066de Mon Sep 17 00:00:00 2001 From: Noel Grandin Date: Wed, 15 Aug 2012 14:09:51 +0200 Subject: Convert pRedoStack in SdrModel class from Container to std::deque Change-Id: I0535175c4881a1ea55d7cb7361ae78bb81aa10c6 --- svx/inc/svx/svdmodel.hxx | 6 +++--- svx/source/svdraw/svdmodel.cxx | 15 +++++++++------ 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/svx/inc/svx/svdmodel.hxx b/svx/inc/svx/svdmodel.hxx index 2f1ad6b4a1f1..dd2919c6808d 100644 --- a/svx/inc/svx/svdmodel.hxx +++ b/svx/inc/svx/svdmodel.hxx @@ -193,7 +193,7 @@ protected: SfxStyleSheet* pDefaultStyleSheet; sfx2::LinkManager* pLinkManager; // LinkManager std::deque* pUndoStack; - Container* pRedoStack; + std::deque* pRedoStack; SdrUndoGroup* pAktUndoGroup; // Fuer mehrstufige sal_uInt16 nUndoLevel; // Undo-Klammerung sal_uInt16 nProgressPercent; // fuer den ProgressBar-Handler @@ -579,8 +579,8 @@ public: sal_uIntPtr GetUndoActionCount() const { return pUndoStack!=NULL ? pUndoStack->size() : 0; } const SfxUndoAction* GetUndoAction(sal_uIntPtr nNum) const { return (SfxUndoAction*)(pUndoStack!=NULL ? (*pUndoStack)[nNum] : NULL); } // RedoAction(0) ist die aktuelle (also die des letzten Undo) - sal_uIntPtr GetRedoActionCount() const { return pRedoStack!=NULL ? pRedoStack->Count() : 0; } - const SfxUndoAction* GetRedoAction(sal_uIntPtr nNum) const { return (SfxUndoAction*)(pRedoStack!=NULL ? pRedoStack->GetObject(nNum) : NULL); } + sal_uIntPtr GetRedoActionCount() const { return pRedoStack!=NULL ? pRedoStack->size() : 0; } + const SfxUndoAction* GetRedoAction(sal_uIntPtr nNum) const { return (SfxUndoAction*)(pRedoStack!=NULL ? (*pRedoStack)[nNum] : NULL); } bool Undo(); bool Redo(); diff --git a/svx/source/svdraw/svdmodel.cxx b/svx/source/svdraw/svdmodel.cxx index d3c0c380e7dc..14d45d61b962 100644 --- a/svx/source/svdraw/svdmodel.cxx +++ b/svx/source/svdraw/svdmodel.cxx @@ -422,8 +422,9 @@ void SdrModel::ClearUndoBuffer() pUndoStack=NULL; } if (pRedoStack!=NULL) { - while (pRedoStack->Count()!=0) { - delete (SfxUndoAction*) pRedoStack->Remove(pRedoStack->Count()-1); + while (!pRedoStack->empty()) { + delete pRedoStack->back(); + pRedoStack->pop_back(); } delete pRedoStack; pRedoStack=NULL; @@ -446,10 +447,10 @@ bool SdrModel::Undo() mbUndoEnabled = false; pDo->Undo(); if(pRedoStack==NULL) - pRedoStack=new Container(1024,16,16); + pRedoStack=new std::deque; SfxUndoAction* p = pUndoStack->front(); pUndoStack->pop_front(); - pRedoStack->Insert(p,(sal_uIntPtr)0); + pRedoStack->push_front(p); mbUndoEnabled = bWasUndoEnabled; } } @@ -473,7 +474,9 @@ bool SdrModel::Redo() pDo->Redo(); if(pUndoStack==NULL) pUndoStack=new std::deque; - pUndoStack->push_front((SfxUndoAction*) pRedoStack->Remove((sal_uIntPtr)0)); + SfxUndoAction* p = pRedoStack->front(); + pRedoStack->pop_front(); + pUndoStack->push_front(p); mbUndoEnabled = bWasUndoEnabled; } } @@ -522,7 +525,7 @@ void SdrModel::ImpPostUndoAction(SdrUndoAction* pUndo) pUndoStack->pop_back(); } if (pRedoStack!=NULL) - pRedoStack->Clear(); + pRedoStack->clear(); } } else -- cgit