/// <inheritdoc /> public override void Do(DocumentEditorContext context) { var caret = (TextCaret)_handle.GetCaret(context); var block = caret.Block; var destinationDescriptor = GetDestinationDescriptor(); // optimization; if it's already the correct block type, we just have to change it in-place if (block.DescriptorHandle == destinationDescriptor) { MakeChangesTo((TBlock)block); } else { var newBlock = (TBlock)destinationDescriptor.CreateInstance(); MakeChangesTo(newBlock); Replace(context, block, newBlock); } }
/// <summary> /// Moves to he cursor to point to the location given by <paramref name="handle"/>. /// </summary> public static void MoveTo(this DocumentSelection cursor, DocumentCursorHandle handle, DocumentEditorContext context) => cursor.Replace(handle.GetCaret(context));