From 1472b33e83897ba443974f838fb92fe720118d42 Mon Sep 17 00:00:00 2001 From: Neil Date: Fri, 18 Jul 2014 23:37:23 +1000 Subject: Added the tentative undo feature. This is useful for IMEs that want to display and manipulate a character being composed, but may then commit or remove it leaving no history in undo of the intermediate forms. --- src/CellBuffer.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'src/CellBuffer.h') diff --git a/src/CellBuffer.h b/src/CellBuffer.h index f07b45983..5e4fc7c8c 100644 --- a/src/CellBuffer.h +++ b/src/CellBuffer.h @@ -95,6 +95,7 @@ class UndoHistory { int currentAction; int undoSequenceDepth; int savePoint; + int tentativePoint; void EnsureUndoRoom(); @@ -117,6 +118,12 @@ public: void SetSavePoint(); bool IsSavePoint() const; + // Tentative actions are used for input composition so that it can be undone cleanly + void TentativeStart(); + void TentativeCommit(); + bool TentativeActive() const { return tentativePoint >= 0; } + int TentativeSteps(); + /// To perform an undo, StartUndo is called to retrieve the number of steps, then UndoStep is /// called that many times. Similarly for redo. bool CanUndo() const; @@ -193,6 +200,11 @@ public: void SetSavePoint(); bool IsSavePoint() const; + void TentativeStart(); + void TentativeCommit(); + bool TentativeActive() const; + int TentativeSteps(); + bool SetUndoCollection(bool collectUndo); bool IsCollectingUndo() const; void BeginUndoAction(); -- cgit v1.2.3