From c425407979c2eca1a6fe6858923619de18c8d058 Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Cenoz Date: Fri, 6 May 2016 22:56:57 +0200 Subject: Finishing eraser tool. TODO undo work (bzr r14865.1.2) --- src/document-undo.cpp | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) (limited to 'src/document-undo.cpp') diff --git a/src/document-undo.cpp b/src/document-undo.cpp index eb0ac7707..f6bcf3ab2 100644 --- a/src/document-undo.cpp +++ b/src/document-undo.cpp @@ -328,28 +328,35 @@ gboolean Inkscape::DocumentUndo::redo(SPDocument *doc) return ret; } -void Inkscape::DocumentUndo::clearUndo(SPDocument *doc) +void Inkscape::DocumentUndo::clearUndo(SPDocument *doc, size_t limit) { if (! doc->priv->undo.empty()) doc->priv->undoStackObservers.notifyClearUndoEvent(); - while (! doc->priv->undo.empty()) { + if (limit == 0) { + limit = doc->priv->undo.size(); + } + while (! doc->priv->undo.empty() && limit > 0) { Inkscape::Event *e = doc->priv->undo.back(); doc->priv->undo.pop_back(); delete e; doc->priv->history_size--; + limit--; } } -void Inkscape::DocumentUndo::clearRedo(SPDocument *doc) +void Inkscape::DocumentUndo::clearRedo(SPDocument *doc, size_t limit) { - if (!doc->priv->redo.empty()) - doc->priv->undoStackObservers.notifyClearRedoEvent(); - - while (! doc->priv->redo.empty()) { + if (!doc->priv->redo.empty()) + doc->priv->undoStackObservers.notifyClearRedoEvent(); + if (limit == 0) { + limit = doc->priv->undo.size(); + } + while (! doc->priv->redo.empty() && limit > 0) { Inkscape::Event *e = doc->priv->redo.back(); doc->priv->redo.pop_back(); delete e; doc->priv->history_size--; + limit--; } } -- cgit v1.2.3