Exemple #1
0
        /// <inheritdoc />
        public override void Undo(DocumentEditorContext context)
        {
            var caret = (TextCaret)_handle.GetCaret(context);

            var block = caret.Block;

            // optimization; if it was originally a block of the same type, we can just deserialize
            // but leave it in-place
            if (block.DescriptorHandle == _originalDescriptor)
            {
                var originalBlock = block;
                originalBlock.DeserializeProperties(_originalProperties);
            }
            else
            {
                // otherwise we have to re-create it
                TextBlock original = (TextBlock)_originalDescriptor.CreateInstance();
                original.DeserializeProperties(_originalProperties);
                Replace(context, caret.Block, original);
            }
        }