Browse Source

Fix RTL hit testing after bidi mirror changes

pull/8998/head
Benedikt Stebner 4 years ago
parent
commit
3e127d70a1
  1. 7
      src/Avalonia.Base/Media/GlyphRun.cs
  2. 5
      tests/Avalonia.Skia.UnitTests/Media/TextFormatting/TextLayoutTests.cs

7
src/Avalonia.Base/Media/GlyphRun.cs

@ -361,7 +361,9 @@ namespace Avalonia.Media
characterIndex = cluster;
if (currentX - advance < distance)
var offsetX = currentX - advance;
if (offsetX < distance)
{
break;
}
@ -375,7 +377,8 @@ namespace Avalonia.Media
var characterHit = FindNearestCharacterHit(characterIndex, out var width);
var delta = width / 2;
var offset = IsLeftToRight ? distance - currentX : currentX - distance;
var offset = IsLeftToRight ? Math.Round(distance - currentX, 3) : Math.Round(currentX - distance, 3);
var isTrailing = offset > delta;

5
tests/Avalonia.Skia.UnitTests/Media/TextFormatting/TextLayoutTests.cs

@ -1009,7 +1009,10 @@ namespace Avalonia.Skia.UnitTests.Media.TextFormatting
currentX += glyphAdvance;
cluster = clusters[j];
if(glyphAdvance > 0)
{
cluster = clusters[j];
}
}
}
}

Loading…
Cancel
Save