committed by
Julien Lebosquain
5 changed files with 79 additions and 47 deletions
@ -0,0 +1,67 @@ |
|||
using System; |
|||
using Android.Views; |
|||
using Android.Views.InputMethods; |
|||
using Avalonia.Android.Platform.SkiaPlatform; |
|||
|
|||
namespace Avalonia.Android |
|||
{ |
|||
public partial class AvaloniaView : IInitEditorInfo |
|||
{ |
|||
private Func<TopLevelImpl, EditorInfo, IInputConnection>? _initEditorInfo; |
|||
|
|||
public override IInputConnection OnCreateInputConnection(EditorInfo? outAttrs) |
|||
{ |
|||
return _initEditorInfo?.Invoke(_view, outAttrs!)!; |
|||
} |
|||
|
|||
void IInitEditorInfo.InitEditorInfo(Func<TopLevelImpl, EditorInfo, IInputConnection> init) |
|||
{ |
|||
_initEditorInfo = init; |
|||
} |
|||
|
|||
protected override void OnFocusChanged(bool gainFocus, FocusSearchDirection direction, global::Android.Graphics.Rect? previouslyFocusedRect) |
|||
{ |
|||
base.OnFocusChanged(gainFocus, direction, previouslyFocusedRect); |
|||
_accessHelper.OnFocusChanged(gainFocus, (int)direction, previouslyFocusedRect); |
|||
} |
|||
|
|||
protected override bool DispatchHoverEvent(MotionEvent? e) |
|||
{ |
|||
return _accessHelper.DispatchHoverEvent(e!) || base.DispatchHoverEvent(e); |
|||
} |
|||
|
|||
protected override bool DispatchGenericPointerEvent(MotionEvent? e) |
|||
{ |
|||
var result = _view.PointerHelper.DispatchMotionEvent(e, out var callBase); |
|||
|
|||
var baseResult = callBase && base.DispatchGenericPointerEvent(e); |
|||
|
|||
return result ?? baseResult; |
|||
} |
|||
|
|||
public override bool DispatchTouchEvent(MotionEvent? e) |
|||
{ |
|||
var result = _view.PointerHelper.DispatchMotionEvent(e, out var callBase); |
|||
var baseResult = callBase && base.DispatchTouchEvent(e); |
|||
|
|||
if(result == true) |
|||
{ |
|||
// Request focus for this view
|
|||
RequestFocus(); |
|||
} |
|||
|
|||
return result ?? baseResult; |
|||
} |
|||
|
|||
public override bool DispatchKeyEvent(KeyEvent? e) |
|||
{ |
|||
var res = _view.KeyboardHelper.DispatchKeyEvent(e, out var callBase); |
|||
if (res == false) |
|||
callBase = !_accessHelper.DispatchKeyEvent(e!) && callBase; |
|||
|
|||
var baseResult = callBase && base.DispatchKeyEvent(e); |
|||
|
|||
return res ?? baseResult; |
|||
} |
|||
} |
|||
} |
|||
Loading…
Reference in new issue