Browse Source

Cleanup

pull/5735/head
ili 5 years ago
parent
commit
42ad65167c
  1. 12
      src/Android/Avalonia.Android/AndroidInputMethod.cs
  2. 10
      src/Android/Avalonia.Android/Platform/SkiaPlatform/TopLevelImpl.cs
  3. 22
      src/Android/Avalonia.Android/Platform/Specific/Helpers/AndroidKeyboardEventsHelper.cs

12
src/Android/Avalonia.Android/AndroidInputMethod.cs

@ -1,11 +1,8 @@
using System;
using System.Collections.Generic;
using System.Text;
using Android.Content;
using Android.Runtime;
using Android.Views;
using Android.Views.InputMethods;
using Avalonia.Controls.Platform;
using Avalonia.Input;
using Avalonia.Input.TextInput;
@ -38,7 +35,13 @@ namespace Avalonia.Android
public void SetActive(bool active)
{
if (active)
{
_host.RequestFocus();
Reset();
_imm.ShowSoftInput(_host, ShowFlags.Implicit);
}
else
_imm.HideSoftInputFromWindow(_host.WindowToken, HideSoftInputFlags.None);
}
public void SetCursorRect(Rect rect)
@ -81,14 +84,11 @@ namespace Avalonia.Android
outAttrs.InputType |= global::Android.Text.InputTypes.TextFlagMultiLine;
});
Reset();
_inputElement.PointerReleased += RestoreSoftKeyboard;
RestoreSoftKeyboard(null, null);
}
private void RestoreSoftKeyboard(object sender, PointerReleasedEventArgs e)
{
//_imm.ToggleSoftInput(ShowFlags.Implicit, HideSoftInputFlags.NotAlways);
_imm.ShowSoftInput(_host, ShowFlags.Implicit);
}
}

10
src/Android/Avalonia.Android/Platform/SkiaPlatform/TopLevelImpl.cs

@ -35,7 +35,7 @@ namespace Avalonia.Android.Platform.SkiaPlatform
{
_view = new ViewImpl(context, this, placeOnTop);
_textInputMethod = new AndroidInputMethod<ViewImpl>(_view);
_keyboardHelper = new AndroidKeyboardEventsHelper<TopLevelImpl>(this, _textInputMethod);
_keyboardHelper = new AndroidKeyboardEventsHelper<TopLevelImpl>(this);
_touchHelper = new AndroidTouchEventsHelper<TopLevelImpl>(this, () => InputRoot,
GetAvaloniaPointFromEvent);
@ -46,14 +46,6 @@ namespace Avalonia.Android.Platform.SkiaPlatform
MaxClientSize = new PixelSize(_view.Resources.DisplayMetrics.WidthPixels,
_view.Resources.DisplayMetrics.HeightPixels).ToSize(RenderScaling);
_keyboardHelper.ActivateAutoShowKeyboard();
}
public bool HandleEvents
{
get { return _keyboardHelper.HandleEvents; }
set { _keyboardHelper.HandleEvents = value; }
}
public virtual Point GetAvaloniaPointFromEvent(MotionEvent e, int pointerIndex) =>

22
src/Android/Avalonia.Android/Platform/Specific/Helpers/AndroidKeyboardEventsHelper.cs

@ -19,15 +19,12 @@ namespace Avalonia.Android.Platform.Specific.Helpers
internal class AndroidKeyboardEventsHelper<TView> : IDisposable where TView : TopLevelImpl, IAndroidView
{
private readonly TView _view;
private readonly ITextInputMethodImpl _textInpuMethod;
private IInputElement _lastFocusedElement;
public bool HandleEvents { get; set; }
public AndroidKeyboardEventsHelper(TView view, ITextInputMethodImpl androidTextInput)
public AndroidKeyboardEventsHelper(TView view)
{
_view = view;
_textInpuMethod = androidTextInput;
HandleEvents = true;
}
@ -103,23 +100,6 @@ namespace Avalonia.Android.Platform.Specific.Helpers
return rv;
}
public void ActivateAutoShowKeyboard()
{
var kbDevice = (KeyboardDevice.Instance as INotifyPropertyChanged);
//just in case we've called more than once the method
kbDevice.PropertyChanged -= KeyboardDevice_PropertyChanged;
kbDevice.PropertyChanged += KeyboardDevice_PropertyChanged;
}
private void KeyboardDevice_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (e.PropertyName == nameof(KeyboardDevice.FocusedElement))
{
//UpdateKeyboardState(KeyboardDevice.Instance.FocusedElement);
}
}
public void Dispose()
{
HandleEvents = false;

Loading…
Cancel
Save