/// <summary> /// The helper for typing undo unit megring. /// Supposed to be called at the end of typing block - /// after all changes are done. /// Assumes that OpenTypingUndoUnit method was called /// in the beginning of this sequence. /// </summary> private static void CloseTypingUndoUnit(TextEditor This, UndoCloseAction closeAction) { UndoManager undoManager = This._GetUndoManager(); if (undoManager != null && undoManager.IsEnabled) { if (This._typingUndoUnit != null && undoManager.LastUnit == This._typingUndoUnit && !This._typingUndoUnit.Locked) { if (This._typingUndoUnit is TextParentUndoUnit) { ((TextParentUndoUnit)This._typingUndoUnit).RecordRedoSelectionState(); } undoManager.Close(This._typingUndoUnit, closeAction); } } else { This._typingUndoUnit = null; } }
// ---------------------------------------------------------- // // Merge Typing Undo Units // // ---------------------------------------------------------- #region Merge Typing Undo Units /// <summary> /// The helper for typing undo unit merging. /// Supposed to be called in the beginning of typing block - /// before making any changes. /// Assumes that CloseTypingUndoUnit method will be called /// after the change is completed. /// </summary> private static void OpenTypingUndoUnit(TextEditor This) { UndoManager undoManager = This._GetUndoManager(); if (undoManager != null && undoManager.IsEnabled) { if (This._typingUndoUnit != null && undoManager.LastUnit == This._typingUndoUnit && !This._typingUndoUnit.Locked) { undoManager.Reopen(This._typingUndoUnit); } else { This._typingUndoUnit = new TextParentUndoUnit(This.Selection); undoManager.Open(This._typingUndoUnit); } } }