using System; using Avalonia.Controls; using Avalonia.Input; using Avalonia.Input.Platform; using Avalonia.OpenGL; using Avalonia.Platform; using Avalonia.Rendering; using Avalonia.Shared.PlatformSupport; namespace Avalonia.iOS { static class Platform { public static EaglFeature GlFeature; public static DisplayLinkTimer Timer; class PlatformSettings : IPlatformSettings { public Size DoubleClickSize { get; } = new Size(10, 10); public TimeSpan DoubleClickTime { get; } = TimeSpan.FromMilliseconds(500); } public static void Register() { GlFeature ??= new EaglFeature(); Timer ??= new DisplayLinkTimer(); var keyboard = new KeyboardDevice(); var softKeyboard = new SoftKeyboardHelper(); AvaloniaLocator.CurrentMutable .Bind().ToConstant(GlFeature) .Bind().ToConstant(new CursorFactoryStub()) .Bind().ToConstant(new WindowingPlatformStub()) .Bind().ToConstant(new ClipboardImpl()) .Bind().ToConstant(new PlatformSettings()) .Bind().ToConstant(new PlatformIconLoaderStub()) .Bind().ToSingleton() .Bind().ToSingleton() .Bind().ToConstant(Timer) .Bind().ToConstant(new PlatformThreadingInterface()) .Bind().ToConstant(keyboard); keyboard.PropertyChanged += (_, changed) => { if (changed.PropertyName == nameof(KeyboardDevice.FocusedElement)) softKeyboard.UpdateKeyboard(keyboard.FocusedElement); }; } } }