public TextPoint Undo()
{
if (UndoStep == 0)
return new TextPoint(-1, -1);
UndoBlockCollection ActionGroup = UndoBuffer[UndoStep - 1];
UndoBlock undo = ActionGroup[0];
for (int i = ActionGroup.Count - 1; i >= 0; i--)
{
undo = ActionGroup[i];
//TextPoint tp=new TextPoint (undo.Position.X,undo.Position.Y);
switch (undo.Action)
{
case UndoAction.DeleteRange:
InsertText(undo.Text, undo.Position.X, undo.Position.Y, false);
break;
case UndoAction.InsertRange:
{
TextRange r = GetRangeFromText(undo.Text, undo.Position.X, undo.Position.Y);
DeleteRange(r, false);
}
break;
default:
break;
}
}
UndoStep--;
ResetVisibleRows();
//no undo steps left , the document is not dirty
if (UndoStep == 0)
Modified = false;
var tp = new TextPoint(undo.Position.X, undo.Position.Y);
OnUndoBufferChanged();
return tp;
}