Commit 4d631e7f authored by tebjan's avatar tebjan
Browse files

made svg transform collection a proper ICloneable

parent cecce654
...@@ -676,9 +676,7 @@ namespace Svg ...@@ -676,9 +676,7 @@ namespace Svg
if (this.Transforms != null) if (this.Transforms != null)
{ {
newObj.Transforms = new SvgTransformCollection(); newObj.Transforms = this.Transforms.Clone() as SvgTransformCollection;
foreach (var transform in this.Transforms)
newObj.Transforms.Add(transform.Clone() as SvgTransform);
} }
foreach (var child in this.Children) foreach (var child in this.Children)
......
...@@ -8,12 +8,16 @@ using System.Text; ...@@ -8,12 +8,16 @@ using System.Text;
namespace Svg.Transforms namespace Svg.Transforms
{ {
[TypeConverter(typeof(SvgTransformConverter))] [TypeConverter(typeof(SvgTransformConverter))]
public class SvgTransformCollection : List<SvgTransform> public class SvgTransformCollection : List<SvgTransform>, ICloneable
{ {
private void AddItem(SvgTransform item)
public new void Add(SvgTransform item)
{ {
base.Add(item); base.Add(item);
}
public new void Add(SvgTransform item)
{
AddItem(item);
OnTransformChanged(); OnTransformChanged();
} }
...@@ -91,9 +95,19 @@ namespace Svg.Transforms ...@@ -91,9 +95,19 @@ namespace Svg.Transforms
var handler = TransformChanged; var handler = TransformChanged;
if(handler != null) if(handler != null)
{ {
handler(this, new AttributeEventArgs { Attribute = "transform", Value = this }); //make a copy of the current value to avoid collection changed exceptions
handler(this, new AttributeEventArgs { Attribute = "transform", Value = this.Clone() });
} }
} }
public object Clone()
{
var result = new SvgTransformCollection();
foreach (var trans in this)
{
result.AddItem(trans.Clone() as SvgTransform);
}
return result;
}
} }
} }
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment