Procházet zdrojové kódy

clear composition region when presenter is changed

Emmanuel Hansen před 2 roky
rodič
revize
ad56e9d20b

+ 0 - 10
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;

+ 2 - 19
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;
-            }
-        }
     }
 }

+ 2 - 0
src/Avalonia.Controls/TextBoxTextInputMethodClient.cs

@@ -216,6 +216,8 @@ namespace Avalonia.Controls
             {
                 _presenter.PreeditText = null;
 
+                _presenter.CompositionRegion = null;
+
                 _presenter.CaretBoundsChanged -= OnCaretBoundsChanged;
             }