X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FUndo.h;h=fb57e8897e5d51e9b41566f3e3bbfce4fb176a37;hb=04e6076ebb889a3215eaa4ff5cb200822611185c;hp=dbb7a17649b300df94f42dcc1d8ddf2b1044990e;hpb=4d63bd347b9535ee095b032d292838100106d49d;p=lyx.git diff --git a/src/Undo.h b/src/Undo.h index dbb7a17649..fb57e8897e 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. @@ -44,19 +44,6 @@ enum UndoKind { }; -/** - * Record undo information - call with the current cursor and the 'other - * end' of the range of changed paragraphs. So we give an inclusive range. - * This is called before you make the changes to the paragraph, and it - * will record the original information of the paragraphs in the undo stack. - * - * FIXME: We need something to record undo in partial grids for mathed. - * Right now we use recordUndoInset if more than one cell is changed, - * but that puts the cursor in front of the inset after undo. We would need - * something like - * recordUndoGrid(DocIterator & cur, UndoKind kind, idx_type from, idx_type to); - * and store the cell information in class Undo. - */ class Undo { public: @@ -71,7 +58,8 @@ public: /// this will redo the last undo - returns false if no redo possible bool textRedo(DocIterator &); - /// makes sure the next operation will be stored + /// End a sequence of INSERT_UNDO or DELETE_UNDO type of undo + /// operations (grouping of consecutive characters insertion/deletion). void finishUndo(); /// @@ -79,18 +67,42 @@ public: /// bool hasRedoStack() const; - /// The general case: prepare undo for an arbitrary range. + /// 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(); + + /// The general case: record undo information for an arbitrary range. + /** + * Record undo information - call with the current cursor and + * the 'other end' of the range of changed paragraphs. So we + * give an inclusive range. This is called before you make the + * 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, pit_type from, pit_type to); - /// Convenience: prepare undo for the range between 'from' and cursor. + /// Convenience: record undo information for the range between + /// 'from' and cursor. void recordUndo(DocIterator const & cur, UndoKind kind, pit_type from); - /// Convenience: prepare undo for the single paragraph or cell - /// containing the cursor + /// Convenience: record undo information for the single + /// paragraph or cell containing the cursor. void recordUndo(DocIterator const & cur, UndoKind kind = ATOMIC_UNDO); - /// Convenience: prepare undo for the inset containing the cursor - void recordUndoInset(DocIterator 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); /// Convenience: prepare undo for the whole buffer void recordUndoFullDocument(DocIterator const & cur);