class Undo
{
+ /// noncopyable
+ Undo(Undo const &);
+ void operator=(Undo const &);
public:
Undo(Buffer &);
void clear();
/// this will undo the last action - returns false if no undo possible
- bool textUndo(CursorData &);
+ bool undoAction(CursorData &);
/// this will redo the last undo - returns false if no redo possible
- bool textRedo(CursorData &);
+ bool redoAction(CursorData &);
/// End a sequence of INSERT_UNDO or DELETE_UNDO type of undo
/// operations (grouping of consecutive characters insertion/deletion).
/**
* This cursor takes precedence over what is passed to recordUndo.
* In the case of nested groups, only the first cur_before is
- * taken in account. The cursor is reset at the end of the
+ * taken into account. The cursor is reset at the end of the
* top-level group.
*/
void beginUndoGroup(CursorData const & cur_before);
void endUndoGroup();
/// end the current undo group and set UndoElement::cur_after if necessary.
void endUndoGroup(CursorData const & cur_after);
+ /// end abruptly the current group and create a new one wih the same nesting level
+ void splitUndoGroup(CursorData const & cur);
+ /// return true if an undo group is open and contains at least one element
+ bool activeUndoGroup() const;
/// The general case: record undo information for an arbitrary range.
/**
*/
class UndoGroupHelper {
public:
- UndoGroupHelper(Buffer * buf) : buffer_(0)
- {
- resetBuffer(buf);
- }
+ UndoGroupHelper(Buffer * buf = 0);
- ~UndoGroupHelper()
- {
- resetBuffer(0);
- }
+ ~UndoGroupHelper();
/** Close the current undo group if necessary and create a new one
* for buffer \c buf.
void resetBuffer(Buffer * buf);
private:
- Buffer * buffer_;
+ class Impl;
+ Impl * const d;
};