diff --git a/src/Skia/Perspex.Skia/DrawingContextImpl.cs b/src/Skia/Perspex.Skia/DrawingContextImpl.cs index c8352be734..eec1e44e10 100644 --- a/src/Skia/Perspex.Skia/DrawingContextImpl.cs +++ b/src/Skia/Perspex.Skia/DrawingContextImpl.cs @@ -123,7 +123,7 @@ namespace Perspex.Skia brush.Brush->StrokeLineCap = pen.StartLineCap; brush.Brush->StrokeMiterLimit = (float)pen.MiterLimit; - if (pen.DashStyle != null) + if (pen.DashStyle?.Dashes != null) { var dashes = pen.DashStyle.Dashes; if (dashes.Count > NativeBrush.MaxDashCount) @@ -168,12 +168,12 @@ namespace Perspex.Skia public void PushClip(Rect clip) { var rc = SkRect.FromRect(clip); - //MethodTable.Instance.PushClip(Handle, ref rc); + MethodTable.Instance.PushClip(Handle, ref rc); } public void PopClip() { - //MethodTable.Instance.PopClip(Handle); + MethodTable.Instance.PopClip(Handle); } private readonly Stack _opacityStack = new Stack(); diff --git a/src/Skia/Perspex.Skia/FormattedTextImpl.cs b/src/Skia/Perspex.Skia/FormattedTextImpl.cs index b9fd05c17d..a85bb97126 100644 --- a/src/Skia/Perspex.Skia/FormattedTextImpl.cs +++ b/src/Skia/Perspex.Skia/FormattedTextImpl.cs @@ -56,6 +56,8 @@ namespace Perspex.Skia public Rect HitTestTextPosition(int index) { + if (index < 0 || index >= _rects.Count) + return new Rect(); return _rects[index]; } @@ -89,8 +91,13 @@ namespace Perspex.Skia } for (var c = 0; c < _text.Length; c++) _rects.Add(_shared->Bounds[c].ToRect()); - var lastLine = _shared->Lines[_shared->LineCount - 1]; - _size = new Size(maxX, lastLine.Top + lastLine.Height); + if (_shared->LineCount == 0) + _size = new Size(); + else + { + var lastLine = _shared->Lines[_shared->LineCount - 1]; + _size = new Size(maxX, lastLine.Top + lastLine.Height); + } } void Rebuild()