diff --git a/src/Skia/Avalonia.Skia/FormattedTextImpl.cs b/src/Skia/Avalonia.Skia/FormattedTextImpl.cs index 9612fa3d9b..d0157815a9 100644 --- a/src/Skia/Avalonia.Skia/FormattedTextImpl.cs +++ b/src/Skia/Avalonia.Skia/FormattedTextImpl.cs @@ -140,25 +140,17 @@ namespace Avalonia.Skia public Rect HitTestTextPosition(int index) { + if (string.IsNullOrEmpty(Text)) + { + var alignmentOffset = TransformX(0, 0, _paint.TextAlign); + return new Rect(alignmentOffset, 0, 0, _lineHeight); + } var rects = GetRects(); - - if (index < 0 || index >= rects.Count) + if (index >= Text.Length || index < 0) { var r = rects.LastOrDefault(); return new Rect(r.X + r.Width, r.Y, 0, _lineHeight); } - - if (rects.Count == 0) - { - return new Rect(0, 0, 1, _lineHeight); - } - - if (index == rects.Count) - { - var lr = rects[rects.Count - 1]; - return new Rect(new Point(lr.X + lr.Width, lr.Y), rects[index - 1].Size); - } - return rects[index]; }