summaryrefslogtreecommitdiffstats
path: root/src/document-undo.cpp
diff options
context:
space:
mode:
authorJabier Arraiza Cenoz <jabier.arraiza@marker.es>2016-05-06 20:56:57 +0000
committerjabiertxof <info@marker.es>2016-05-06 20:56:57 +0000
commitc425407979c2eca1a6fe6858923619de18c8d058 (patch)
tree3dc9ef2db9fd41ee032fdeab9e9bb1e021c3f9d9 /src/document-undo.cpp
parentWorking on clip erase basic work done but broken (diff)
downloadinkscape-c425407979c2eca1a6fe6858923619de18c8d058.tar.gz
inkscape-c425407979c2eca1a6fe6858923619de18c8d058.zip
Finishing eraser tool. TODO undo work
(bzr r14865.1.2)
Diffstat (limited to '')
-rw-r--r--src/document-undo.cpp21
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--;
}
}