X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FUndo.h;h=4e83145a47cbad3443e16de378f4dcc0740b87a0;hb=4d5bef1bdcbe7a20d67613a793acb89f0e583bf6;hp=8945b58ca328a81a831465ff3fa2891939d90140;hpb=00c0933502b6c3068bfd5ccbe19996dbdbc6e124;p=lyx.git diff --git a/src/Undo.h b/src/Undo.h index 8945b58ca3..4e83145a47 100644 --- a/src/Undo.h +++ b/src/Undo.h @@ -5,10 +5,10 @@ * Licence details can be found in the file COPYING. * * \author Asger Alstrup - * \author Lars Gullik Bjønnes + * \author Lars Gullik Bjønnes * \author John Levon - * \author André Pönitz - * \author Jürgen Vigna + * \author André Pönitz + * \author Jürgen Vigna * \author Abdelrazak Younes * * Full author contact details are available in file CREDITS. @@ -23,7 +23,8 @@ namespace lyx { class Buffer; class BufferParams; -class DocIterator; +class CursorData; +class Inset; class MathData; class ParagraphList; @@ -52,14 +53,17 @@ public: ~Undo(); + /// Clear out all undo/redo contents. + void clear(); + /// this will undo the last action - returns false if no undo possible - bool textUndo(DocIterator &); + bool textUndo(CursorData &); /// this will redo the last undo - returns false if no redo possible - bool textRedo(DocIterator &); + bool textRedo(CursorData &); /// End a sequence of INSERT_UNDO or DELETE_UNDO type of undo - /// operations. + /// operations (grouping of consecutive characters insertion/deletion). void finishUndo(); /// @@ -67,12 +71,22 @@ public: /// bool hasRedoStack() const; - /// open a new group of undo operations. Groups can be nested. + /// Mark all the elements of the undo and redo stacks as dirty + void markDirty(); + + /// open a new group of undo operations. + /** + * Groups can be nested. Such a nested group e.g. { {} {} } is undone in + * a single step. This means you can add a group whenever you are not sure. + */ void beginUndoGroup(); /// end the current undo group. void endUndoGroup(); + /// end the current undo group and set UndoElement::cur_after if necessary. + void endUndoGroup(CursorData const &); + /// The general case: record undo information for an arbitrary range. /** * Record undo information - call with the current cursor and @@ -81,24 +95,25 @@ public: * changes to the paragraph, and it will record the original * information of the paragraphs in the undo stack. */ - void recordUndo(DocIterator const & cur, UndoKind kind, + void recordUndo(CursorData const & cur, UndoKind kind, pit_type from, pit_type to); /// Convenience: record undo information for the range between /// 'from' and cursor. - void recordUndo(DocIterator const & cur, UndoKind kind, pit_type from); + void recordUndo(CursorData const & cur, UndoKind kind, pit_type from); /// Convenience: record undo information for the single /// paragraph or cell containing the cursor. - void recordUndo(DocIterator const & cur, UndoKind kind = ATOMIC_UNDO); + void recordUndo(CursorData const & cur, UndoKind kind = ATOMIC_UNDO); /// Convenience: record undo information for the inset /// containing the cursor. - void recordUndoInset(DocIterator const & cur, - UndoKind kind = ATOMIC_UNDO); + void recordUndoInset(CursorData const & cur, + UndoKind kind = ATOMIC_UNDO, + Inset const * inset = 0); /// Convenience: prepare undo for the whole buffer - void recordUndoFullDocument(DocIterator const & cur); + void recordUndoFullDocument(CursorData const & cur); private: struct Private;