diff --git a/src/Android/Avalonia.Android/AndroidInputMethod.cs b/src/Android/Avalonia.Android/AndroidInputMethod.cs index d3b9700253..eb5250bd08 100644 --- a/src/Android/Avalonia.Android/AndroidInputMethod.cs +++ b/src/Android/Avalonia.Android/AndroidInputMethod.cs @@ -70,11 +70,6 @@ namespace Avalonia.Android public void SetClient(ITextInputMethodClient client) { - if(_inputConnection!= null) - { - (_inputConnection.InputEditable as IDisposable)?.Dispose(); - } - _client = client; if (IsActive) @@ -139,11 +134,6 @@ namespace Avalonia.Android outAttrs.ImeOptions |= ImeFlags.NoFullscreen | ImeFlags.NoExtractUi; - if(_client.TextViewVisual is TextPresenter presenter) - { - _inputConnection?.InputEditable.SetPresenter(presenter); - } - _client.TextEditable = _inputConnection.InputEditable; return _inputConnection; diff --git a/src/Android/Avalonia.Android/InputEditable.cs b/src/Android/Avalonia.Android/InputEditable.cs index d594b25d7e..c5b68d2652 100644 --- a/src/Android/Avalonia.Android/InputEditable.cs +++ b/src/Android/Avalonia.Android/InputEditable.cs @@ -13,7 +13,7 @@ using static System.Net.Mime.MediaTypeNames; namespace Avalonia.Android { - internal class InputEditable : SpannableStringBuilder, IDisposable, ITextEditable + internal class InputEditable : SpannableStringBuilder, ITextEditable { private readonly TopLevelImpl _topLevel; private readonly IAndroidInputMethod _inputMethod; @@ -22,7 +22,6 @@ namespace Avalonia.Android private string _previousText; private int _previousSelectionStart; private int _previousSelectionEnd; - private TextPresenter _presenter; public event EventHandler TextChanged; public event EventHandler SelectionChanged; @@ -55,9 +54,6 @@ namespace Avalonia.Android { } - public TextPresenter Presenter { get => _presenter; } - - public int SelectionStart { get => Selection.GetSelectionStart(this); set @@ -107,7 +103,7 @@ namespace Avalonia.Android public void EndBatchEdit() { - if (_currentBatchLevel == 1 && _presenter != null) + if (_currentBatchLevel == 1) { if(_previousText != Text) { @@ -127,18 +123,5 @@ namespace Avalonia.Android { CompositionChanged?.Invoke(this, EventArgs.Empty); } - - void IDisposable.Dispose() - { - _presenter = null; - } - - public void SetPresenter(TextPresenter presenter) - { - if (_presenter == null) - { - _presenter = presenter; - } - } } } diff --git a/src/Avalonia.Controls/TextBoxTextInputMethodClient.cs b/src/Avalonia.Controls/TextBoxTextInputMethodClient.cs index a5ff707e1e..3a28836a99 100644 --- a/src/Avalonia.Controls/TextBoxTextInputMethodClient.cs +++ b/src/Avalonia.Controls/TextBoxTextInputMethodClient.cs @@ -216,6 +216,8 @@ namespace Avalonia.Controls { _presenter.PreeditText = null; + _presenter.CompositionRegion = null; + _presenter.CaretBoundsChanged -= OnCaretBoundsChanged; }