Browse Source

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

pull/10693/head
Benedikt Stebner 4 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; return default;
} }
var visualRoot = _presenter.VisualRoot!; var transform = _presenter.TransformToVisual(_parent);
var transform = _presenter.TransformToVisual((Visual)visualRoot);
if (transform == null) if (transform == null)
{ {

13
src/Avalonia.Native/AvaloniaNativeTextInputMethod.cs

@ -60,7 +60,18 @@ namespace Avalonia.Native
return; 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) private void OnSurroundingTextChanged(object sender, EventArgs e)

Loading…
Cancel
Save