]> git.lyx.org Git - features.git/blobdiff - src/Undo.cpp
The way this was done here is inconsistent with how it is done
[features.git] / src / Undo.cpp
index 7a5b1761f278029bc08607b6e6c302d19efa19a4..7a1c6fdf574474119e403ad72071da4c333c42ce 100644 (file)
@@ -434,10 +434,12 @@ void Undo::Private::doTextUndoOrRedo(CursorData & cur, UndoElementStack & stack,
 
        if (undo.bparams)
                doRecordUndoBufferParams(undo.cur_after, otherstack);
-       else
+       else {
+               LATTEST(undo.end <= cell_dit.lastpit());
                doRecordUndo(ATOMIC_UNDO, cell_dit,
                                         undo.from, cell_dit.lastpit() - undo.end, undo.cur_after,
                                         otherstack);
+       }
        otherstack.top().cur_after = undo.cur_before;
 
        // This does the actual undo/redo.
@@ -575,43 +577,31 @@ void Undo::endUndoGroup(CursorData const & cur)
 }
 
 
-// FIXME: remove these convenience functions and make
-// Private::recordUndo public as sole interface. The code in the
-// convenience functions can move to Cursor.cpp.
-
 void Undo::recordUndo(CursorData const & cur, UndoKind kind)
 {
        d->recordUndo(kind, cur, cur.pit(), cur.pit(), cur);
 }
 
 
-void Undo::recordUndoInset(CursorData const & cur, UndoKind kind,
-                          Inset const * inset)
+void Undo::recordUndo(CursorData const & cur, pit_type from, pit_type to)
+{
+       d->recordUndo(ATOMIC_UNDO, cur, from, to, cur);
+}
+
+
+void Undo::recordUndoInset(CursorData const & cur, Inset const * inset)
 {
        if (!inset || inset == &cur.inset()) {
                DocIterator c = cur;
                c.pop_back();
-               d->recordUndo(kind, c, c.pit(), c.pit(), cur);
+               d->recordUndo(ATOMIC_UNDO, c, c.pit(), c.pit(), cur);
        } else if (inset == cur.nextInset())
-               recordUndo(cur, kind);
+               recordUndo(cur);
        else
                LYXERR0("Inset not found, no undo stack added.");
 }
 
 
-void Undo::recordUndo(CursorData const & cur, UndoKind kind, pit_type from)
-{
-       d->recordUndo(kind, cur, cur.pit(), from, cur);
-}
-
-
-void Undo::recordUndo(CursorData const & cur, UndoKind kind,
-       pit_type from, pit_type to)
-{
-       d->recordUndo(kind, cur, from, to, cur);
-}
-
-
 void Undo::recordUndoBufferParams(CursorData const & cur)
 {
        d->recordUndoBufferParams(cur);
@@ -629,5 +619,18 @@ void Undo::recordUndoFullBuffer(CursorData const & cur)
        endUndoGroup();
 }
 
+/// UndoGroupHelper class stuff
+
+void UndoGroupHelper::resetBuffer(Buffer * buf)
+{
+       if (buf == buffer_)
+               return;
+       if (buffer_)
+               buffer_->undo().endUndoGroup();
+       buffer_ = buf;
+       if (buffer_)
+               buffer_->undo().beginUndoGroup();
+}
+
 
 } // namespace lyx