|
|
|
@ -140,20 +140,20 @@ namespace Avalonia.Skia |
|
|
|
|
|
|
|
public Rect HitTestTextPosition(int index) |
|
|
|
{ |
|
|
|
var rects = GetRects(); |
|
|
|
var lineWidth = (float)_bounds.Width; |
|
|
|
var alignmentOffset = TransformX(0, lineWidth, _paint.TextAlign); |
|
|
|
|
|
|
|
if (rects.Count == 0) |
|
|
|
if (string.IsNullOrEmpty(Text) || index < 0) |
|
|
|
{ |
|
|
|
var x = TransformX(0, 0, _paint.TextAlign); |
|
|
|
return new Rect(x, 0, 0, _lineHeight); |
|
|
|
return new Rect(alignmentOffset, 0, 0, _lineHeight); |
|
|
|
} |
|
|
|
|
|
|
|
if (index < 0 || index >= rects.Count) |
|
|
|
if (index >= Text.Length) |
|
|
|
{ |
|
|
|
var r = rects.LastOrDefault(); |
|
|
|
return new Rect(r.X + r.Width, r.Y, 0, _lineHeight); |
|
|
|
return new Rect(lineWidth + alignmentOffset, 0, 0, _lineHeight); |
|
|
|
} |
|
|
|
|
|
|
|
var rects = GetRects(); |
|
|
|
return rects[index]; |
|
|
|
} |
|
|
|
|
|
|
|
|