Browse Source

fix crash with samsung keyboard when using password textboxes (#18793)

release/11.3.1
Emmanuel Hansen 9 months ago
committed by Julien Lebosquain
parent
commit
4a0ec56db1
  1. 6
      src/Android/Avalonia.Android/Platform/Input/AvaloniaInputConnection.cs
  2. 2
      src/Android/Avalonia.Android/Platform/Input/TextEditBuffer.cs

6
src/Android/Avalonia.Android/Platform/Input/AvaloniaInputConnection.cs

@ -279,20 +279,20 @@ namespace Avalonia.Android.Platform.Input
public ICharSequence? GetSelectedTextFormatted([GeneratedEnum] GetTextFlags flags) public ICharSequence? GetSelectedTextFormatted([GeneratedEnum] GetTextFlags flags)
{ {
return new SpannableString(_editBuffer.SelectedText); return new Java.Lang.String(_editBuffer.SelectedText ?? "");
} }
public ICharSequence? GetTextAfterCursorFormatted(int n, [GeneratedEnum] GetTextFlags flags) public ICharSequence? GetTextAfterCursorFormatted(int n, [GeneratedEnum] GetTextFlags flags)
{ {
var end = Math.Min(_editBuffer.Selection.End, _editBuffer.Text.Length); var end = Math.Min(_editBuffer.Selection.End, _editBuffer.Text.Length);
return new SpannableString(_editBuffer.Text.Substring(end, Math.Min(n, _editBuffer.Text.Length - end))); return new Java.Lang.String(_editBuffer.Text.Substring(end, Math.Min(n, _editBuffer.Text.Length - end)));
} }
public ICharSequence? GetTextBeforeCursorFormatted(int n, [GeneratedEnum] GetTextFlags flags) public ICharSequence? GetTextBeforeCursorFormatted(int n, [GeneratedEnum] GetTextFlags flags)
{ {
var start = Math.Max(0, _editBuffer.Selection.Start - n); var start = Math.Max(0, _editBuffer.Selection.Start - n);
var length = _editBuffer.Selection.Start - start; var length = _editBuffer.Selection.Start - start;
return _editBuffer.Text == null ? null : new SpannableString(_editBuffer.Text.Substring(start, length)); return _editBuffer.Text == null ? null : new Java.Lang.String(_editBuffer.Text.Substring(start, length));
} }
public bool PerformPrivateCommand(string? action, Bundle? data) public bool PerformPrivateCommand(string? action, Bundle? data)

2
src/Android/Avalonia.Android/Platform/Input/TextEditBuffer.cs

@ -96,7 +96,7 @@ namespace Avalonia.Android.Platform.Input
SelectionStart = Selection.Start, SelectionStart = Selection.Start,
SelectionEnd = Selection.End, SelectionEnd = Selection.End,
StartOffset = 0, StartOffset = 0,
Text = new SpannableString(Text) Text = new Java.Lang.String(Text)
}; };
internal void Remove(int index, int length) internal void Remove(int index, int length)

Loading…
Cancel
Save