Browse Source

dispatch the CursorRectangleEvent invoke so recipients will see textbox / textpresenter / ime apis in a consistent state.

pull/8963/head
Dan Walmsley 4 years ago
parent
commit
1c0ef8ebc7
  1. 6
      src/Avalonia.Controls/TextBoxTextInputMethodClient.cs

6
src/Avalonia.Controls/TextBoxTextInputMethodClient.cs

@ -4,6 +4,7 @@ using Avalonia.Controls.Presenters;
using Avalonia.Input; using Avalonia.Input;
using Avalonia.Input.TextInput; using Avalonia.Input.TextInput;
using Avalonia.Media; using Avalonia.Media;
using Avalonia.Threading;
using Avalonia.VisualTree; using Avalonia.VisualTree;
namespace Avalonia.Controls namespace Avalonia.Controls
@ -57,7 +58,7 @@ namespace Avalonia.Controls
public TextInputMethodSurroundingText SurroundingText => new() public TextInputMethodSurroundingText SurroundingText => new()
{ {
Text = _presenter?.Text ?? "", Text = _presenter?.Text ?? "",
CursorOffset = _presenter?.SelectionEnd ?? 0, CursorOffset = _presenter?.CaretIndex ?? 0,
AnchorOffset = _presenter?.SelectionStart ?? 0 AnchorOffset = _presenter?.SelectionStart ?? 0
}; };
@ -73,7 +74,8 @@ namespace Avalonia.Controls
_parent.SelectionEnd = end; _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) private void OnTextBoxPropertyChanged(object? sender, AvaloniaPropertyChangedEventArgs e)
{ {

Loading…
Cancel
Save