]> git.lyx.org Git - lyx.git/blobdiff - src/Undo.cpp
* InsetListings.cpp:
[lyx.git] / src / Undo.cpp
index a0e84e43ec7ccdfd4a2bc209bab2d97e90ec82c5..32ba4f2864de23bcc1b231460882efc1cb8206ad 100644 (file)
@@ -296,7 +296,8 @@ void Undo::Private::doRecordUndo(UndoKind kind,
        // fill in the real data to be saved
        if (cell.inMathed()) {
                // simply use the whole cell
-               undo.array = new MathData(cell.cell());
+               MathData & ar = cell.cell();
+               undo.array = new MathData(ar.buffer(), ar.begin(), ar.end());
        } else {
                // some more effort needed here as 'the whole cell' of the
                // main Text _is_ the whole document.
@@ -346,7 +347,7 @@ void Undo::Private::doTextUndoOrRedo(DocIterator & cur, UndoElementStack & stack
        // try to return early.
 
        // We will store in otherstack the part of the document under 'undo'
-       DocIterator cell_dit = undo.cell.asDocIterator(&buffer_.inset());
+       DocIterator cell_dit = undo.cell.asDocIterator(&buffer_);
 
        doRecordUndo(ATOMIC_UNDO, cell_dit,
                undo.from, cell_dit.lastpit() - undo.end, cur,
@@ -354,7 +355,7 @@ void Undo::Private::doTextUndoOrRedo(DocIterator & cur, UndoElementStack & stack
 
        // This does the actual undo/redo.
        //LYXERR0("undo, performing: " << undo);
-       DocIterator dit = undo.cell.asDocIterator(&buffer_.inset());
+       DocIterator dit = undo.cell.asDocIterator(&buffer_);
        if (undo.isFullBuffer) {
                LASSERT(undo.pars, /**/);
                // This is a full document
@@ -404,7 +405,7 @@ void Undo::Private::doTextUndoOrRedo(DocIterator & cur, UndoElementStack & stack
        LASSERT(undo.pars == 0, /**/);
        LASSERT(undo.array == 0, /**/);
 
-       cur = undo.cursor.asDocIterator(&buffer_.inset());
+       cur = undo.cursor.asDocIterator(&buffer_);
        // Now that we're done with undo, we pop it off the stack.
        stack.pop();
 }
@@ -426,8 +427,9 @@ bool Undo::Private::textUndoOrRedo(DocIterator & cur, bool isUndoOperation)
        while (!stack.empty() && stack.top().group_id == gid)
                doTextUndoOrRedo(cur, stack, otherstack);
 
-       // Addapt the new material to current buffer.
-       updateLabels(buffer_);
+       // Adapt the new material to current buffer.
+       buffer_.setBuffersForInsets(); // FIXME This shouldn't be here.
+       buffer_.updateBuffer();
        return true;
 }
 
@@ -509,7 +511,7 @@ void Undo::recordUndoFullDocument(DocIterator const & cur)
        beginUndoGroup();
        d->doRecordUndo(
                ATOMIC_UNDO,
-               doc_iterator_begin(d->buffer_.inset()),
+               doc_iterator_begin(&d->buffer_),
                0, d->buffer_.paragraphs().size() - 1,
                cur,
                true,