From: Jean-Marc Lasgouttes Date: Mon, 7 Apr 2014 14:46:47 +0000 (+0200) Subject: Respect group integrity when removing stuff from the Undo stack. X-Git-Tag: 2.2.0alpha1~2079 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=4356f2254af1a0ea5e4215e29881296452b1e8d9;hp=ce55ae201d8f047edafa985addbac139c95e3c2c;p=features.git Respect group integrity when removing stuff from the Undo stack. Fixes: #9079 --- diff --git a/src/Undo.cpp b/src/Undo.cpp index a335873d7c..31eaec3dbd 100644 --- a/src/Undo.cpp +++ b/src/Undo.cpp @@ -160,13 +160,17 @@ public: /// Push an item on to the stack, deleting the bottom group on /// overflow. void push(UndoElement const & v) { - c_.push_front(v); - if (c_.size() > limit_) { + // Remove some entries if the limit has been reached. + // However, if the only group on the stack is the one + // we are currently populating, do nothing. + if (c_.size() >= limit_ + && c_.front().group_id != v.group_id) { // remove a whole group at once. const size_t gid = c_.back().group_id; while (!c_.empty() && c_.back().group_id == gid) c_.pop_back(); } + c_.push_front(v); } /// Mark all the elements of the stack as dirty