Browse Source

Merge pull request #11972 from Gillibald/deleteSelectionOnCompositionStart

TextBox fixes
pull/11978/head
Dan Walmsley 3 years ago
committed by GitHub
parent
commit
593f7fd408
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 27
      src/Avalonia.Controls/TextBox.cs

27
src/Avalonia.Controls/TextBox.cs

@ -814,7 +814,12 @@ namespace Avalonia.Controls
if (IsFocused) if (IsFocused)
{ {
_presenter?.ShowCaret(); if(_presenter != null)
{
_presenter.ShowCaret();
_presenter.PropertyChanged += PresenterPropertyChanged;
}
} }
} }
@ -822,9 +827,29 @@ namespace Avalonia.Controls
{ {
base.OnDetachedFromVisualTree(e); base.OnDetachedFromVisualTree(e);
if (_presenter != null)
{
_presenter.HideCaret();
_presenter.PropertyChanged -= PresenterPropertyChanged;
}
_imClient.SetPresenter(null, null); _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) protected override void OnPropertyChanged(AvaloniaPropertyChangedEventArgs change)
{ {
base.OnPropertyChanged(change); base.OnPropertyChanged(change);

Loading…
Cancel
Save