Browse Source

Use visual root coordinate space for caret rect instead of screen coordinates

pull/10693/head
Benedikt Stebner 3 years ago
parent
commit
648b9bc3dc
  1. 4
      src/Avalonia.Controls/TextBoxTextInputMethodClient.cs
  2. 13
      src/Avalonia.Native/AvaloniaNativeTextInputMethod.cs

4
src/Avalonia.Controls/TextBoxTextInputMethodClient.cs

@ -30,9 +30,7 @@ namespace Avalonia.Controls
return default;
}
var visualRoot = _presenter.VisualRoot!;
var transform = _presenter.TransformToVisual((Visual)visualRoot);
var transform = _presenter.TransformToVisual(_parent);
if (transform == null)
{

13
src/Avalonia.Native/AvaloniaNativeTextInputMethod.cs

@ -60,7 +60,18 @@ namespace Avalonia.Native
return;
}
_inputMethod.SetCursorRect(_client.CursorRectangle.ToAvnRect());
var visualRoot = _client.TextViewVisual.VisualRoot;
var transform = _client.TextViewVisual.TransformToVisual((Visual)visualRoot);
if (transform == null)
{
return;
}
var rect = _client.CursorRectangle.TransformToAABB(transform.Value);
_inputMethod.SetCursorRect(rect.ToAvnRect());
}
private void OnSurroundingTextChanged(object sender, EventArgs e)

Loading…
Cancel
Save