diff options
| author | Jabier Arraiza Cenoz <jabier.arraiza@marker.es> | 2016-05-06 20:56:57 +0000 |
|---|---|---|
| committer | jabiertxof <info@marker.es> | 2016-05-06 20:56:57 +0000 |
| commit | c425407979c2eca1a6fe6858923619de18c8d058 (patch) | |
| tree | 3dc9ef2db9fd41ee032fdeab9e9bb1e021c3f9d9 /src/document-undo.cpp | |
| parent | Working on clip erase basic work done but broken (diff) | |
| download | inkscape-c425407979c2eca1a6fe6858923619de18c8d058.tar.gz inkscape-c425407979c2eca1a6fe6858923619de18c8d058.zip | |
Finishing eraser tool. TODO undo work
(bzr r14865.1.2)
Diffstat (limited to 'src/document-undo.cpp')
| -rw-r--r-- | src/document-undo.cpp | 21 |
1 files changed, 14 insertions, 7 deletions
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--; } } |
