- /// The general case: prepare undo for an arbitrary range.
- void recordUndo(DocIterator & cur, UndoKind kind,
+ /// 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
+ * 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(CursorData const & cur, UndoKind kind,