From 1c0ef8ebc71d07581457c95b2423ebed5cc97499 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Tue, 20 Sep 2022 21:11:46 +0100 Subject: [PATCH] dispatch the CursorRectangleEvent invoke so recipients will see textbox / textpresenter / ime apis in a consistent state. --- src/Avalonia.Controls/TextBoxTextInputMethodClient.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/Avalonia.Controls/TextBoxTextInputMethodClient.cs b/src/Avalonia.Controls/TextBoxTextInputMethodClient.cs index d41a397c12..c17d32ec17 100644 --- a/src/Avalonia.Controls/TextBoxTextInputMethodClient.cs +++ b/src/Avalonia.Controls/TextBoxTextInputMethodClient.cs @@ -4,6 +4,7 @@ using Avalonia.Controls.Presenters; using Avalonia.Input; using Avalonia.Input.TextInput; using Avalonia.Media; +using Avalonia.Threading; using Avalonia.VisualTree; namespace Avalonia.Controls @@ -57,7 +58,7 @@ namespace Avalonia.Controls public TextInputMethodSurroundingText SurroundingText => new() { Text = _presenter?.Text ?? "", - CursorOffset = _presenter?.SelectionEnd ?? 0, + CursorOffset = _presenter?.CaretIndex ?? 0, AnchorOffset = _presenter?.SelectionStart ?? 0 }; @@ -73,7 +74,8 @@ namespace Avalonia.Controls _parent.SelectionEnd = end; } - private void OnCaretBoundsChanged(object? sender, EventArgs e) => CursorRectangleChanged?.Invoke(this, EventArgs.Empty); + private void OnCaretBoundsChanged(object? sender, EventArgs e) => + Dispatcher.UIThread.Post(() => CursorRectangleChanged?.Invoke(this, EventArgs.Empty), DispatcherPriority.Input); private void OnTextBoxPropertyChanged(object? sender, AvaloniaPropertyChangedEventArgs e) {