Browse Source

Reset TextBox :empty class when text is empty but preedit is set

Delete selection when composition starts
pull/11972/head
Benedikt Stebner 3 years ago
parent
commit
43e97d9895
  1. 27
      src/Avalonia.Controls/TextBox.cs

27
src/Avalonia.Controls/TextBox.cs

@ -814,7 +814,12 @@ namespace Avalonia.Controls
if (IsFocused)
{
_presenter?.ShowCaret();
if(_presenter != null)
{
_presenter.ShowCaret();
_presenter.PropertyChanged += PresenterPropertyChanged;
}
}
}
@ -822,9 +827,29 @@ namespace Avalonia.Controls
{
base.OnDetachedFromVisualTree(e);
if (_presenter != null)
{
_presenter.HideCaret();
_presenter.PropertyChanged -= PresenterPropertyChanged;
}
_imClient.SetPresenter(null, null);
}
private void PresenterPropertyChanged(object? sender, AvaloniaPropertyChangedEventArgs e)
{
if(e.Property == TextPresenter.PreeditTextProperty)
{
if(string.IsNullOrEmpty(e.OldValue as string) && !string.IsNullOrEmpty(e.NewValue as string))
{
PseudoClasses.Set(":empty", false);
DeleteSelection();
}
}
}
protected override void OnPropertyChanged(AvaloniaPropertyChangedEventArgs change)
{
base.OnPropertyChanged(change);

Loading…
Cancel
Save