X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FUndo.cpp;h=14807cd3dd8c6b49fbfe75c50b49dffd6ab0538a;hb=4db3e641ed6765e005343010cb90ee8af26f8f99;hp=8abc0f2e26cdcbc38bf31ad47bf54e02b3e53774;hpb=f6b1c24b990751598bad532d4595090a2dec9061;p=lyx.git diff --git a/src/Undo.cpp b/src/Undo.cpp index 8abc0f2e26..14807cd3dd 100644 --- a/src/Undo.cpp +++ b/src/Undo.cpp @@ -30,8 +30,9 @@ #include "insets/Inset.h" -#include "support/lassert.h" #include "support/debug.h" +#include "support/gettext.h" +#include "support/lassert.h" #include #include @@ -249,8 +250,10 @@ void Undo::clear() d->undostack_.clear(); d->redostack_.clear(); d->undo_finished_ = true; - d->group_id = 0; - d->group_level = 0; + // We used to do that, but I believe it is better to keep + // groups (only used in Buffer::reload for now (JMarc) + //d->group_id = 0; + //d->group_level = 0; } @@ -338,7 +341,7 @@ void Undo::Private::doRecordUndo(UndoKind kind, // main Text _is_ the whole document. // record the relevant paragraphs Text const * text = cell.text(); - LASSERT(text, /**/); + LBUFERR(text); ParagraphList const & plist = text->paragraphs(); ParagraphList::const_iterator first = plist.begin(); advance(first, first_pit); @@ -359,8 +362,8 @@ void Undo::Private::recordUndo(UndoKind kind, CursorData const & cur, bool isFullBuffer) { - LASSERT(first_pit <= cell.lastpit(), /**/); - LASSERT(last_pit <= cell.lastpit(), /**/); + LASSERT(first_pit <= cell.lastpit(), return); + LASSERT(last_pit <= cell.lastpit(), return); doRecordUndo(kind, cell, first_pit, last_pit, cur, isFullBuffer, undostack_); @@ -398,7 +401,7 @@ void Undo::Private::doTextUndoOrRedo(CursorData & cur, UndoElementStack & stack, //LYXERR0("undo, performing: " << undo); DocIterator dit = undo.cell.asDocIterator(&buffer_); if (undo.isFullBuffer) { - LASSERT(undo.pars, /**/); + LBUFERR(undo.pars); // This is a full document delete otherstack.top().bparams; otherstack.top().bparams = new BufferParams(buffer_.params()); @@ -411,15 +414,15 @@ void Undo::Private::doTextUndoOrRedo(CursorData & cur, UndoElementStack & stack, // gained by storing just 'a few' paragraphs (most if not // all math inset cells have just one paragraph!) //LYXERR0("undo.array: " << *undo.array); - LASSERT(undo.array, /**/); + LBUFERR(undo.array); dit.cell().swap(*undo.array); delete undo.array; undo.array = 0; } else { // Some finer machinery is needed here. Text * text = dit.text(); - LASSERT(text, /**/); - LASSERT(undo.pars, /**/); + LBUFERR(text); + LBUFERR(undo.pars); ParagraphList & plist = text->paragraphs(); // remove new stuff between first and last @@ -443,8 +446,10 @@ void Undo::Private::doTextUndoOrRedo(CursorData & cur, UndoElementStack & stack, delete undo.pars; undo.pars = 0; } - LASSERT(undo.pars == 0, /**/); - LASSERT(undo.array == 0, /**/); + + // We'll clean up in release mode. + LASSERT(undo.pars == 0, undo.pars = 0); + LASSERT(undo.array == 0, undo.array = 0); if (!undo.cur_before.empty()) cur = undo.cur_before; @@ -511,8 +516,10 @@ void Undo::beginUndoGroup() void Undo::endUndoGroup() { - if (d->group_level == 0) + if (d->group_level == 0) { LYXERR0("There is no undo group to end here"); + return; + } --d->group_level; if (d->group_level == 0) { // real end of the group