diff --git a/src/Android/Avalonia.Android/AndroidPlatform.cs b/src/Android/Avalonia.Android/AndroidPlatform.cs
index 3bf01a0f15..6a940a54f1 100644
--- a/src/Android/Avalonia.Android/AndroidPlatform.cs
+++ b/src/Android/Avalonia.Android/AndroidPlatform.cs
@@ -29,17 +29,21 @@ namespace Avalonia
namespace Avalonia.Android
{
- class AndroidPlatform : ITouchPlatformSettings
+ class AndroidPlatform : IPlatformSettings
{
public static readonly AndroidPlatform Instance = new AndroidPlatform();
public static AndroidPlatformOptions Options { get; private set; }
- ///
+ ///
public Size TouchDoubleClickSize => new Size(4, 4);
- ///
+ ///
public TimeSpan TouchDoubleClickTime => TimeSpan.FromMilliseconds(200);
+ public Size DoubleClickSize => TouchDoubleClickSize;
+
+ public TimeSpan DoubleClickTime => TimeSpan.FromMilliseconds(500);
+
public static void Initialize(Type appType, AndroidPlatformOptions options)
{
Options = options;
@@ -49,7 +53,7 @@ namespace Avalonia.Android
.Bind().ToTransient()
.Bind().ToConstant(new WindowingPlatformStub())
.Bind().ToSingleton()
- .Bind().ToConstant(Instance)
+ .Bind().ToConstant(Instance)
.Bind().ToConstant(new AndroidThreadingInterface())
.Bind().ToTransient()
.Bind().ToSingleton()
diff --git a/src/Avalonia.DesignerSupport/Remote/PreviewerWindowingPlatform.cs b/src/Avalonia.DesignerSupport/Remote/PreviewerWindowingPlatform.cs
index ada63f5326..5d8b166b5a 100644
--- a/src/Avalonia.DesignerSupport/Remote/PreviewerWindowingPlatform.cs
+++ b/src/Avalonia.DesignerSupport/Remote/PreviewerWindowingPlatform.cs
@@ -64,5 +64,9 @@ namespace Avalonia.DesignerSupport.Remote
public Size DoubleClickSize { get; } = new Size(2, 2);
public TimeSpan DoubleClickTime { get; } = TimeSpan.FromMilliseconds(500);
+
+ public Size TouchDoubleClickSize => new Size(16, 16);
+
+ public TimeSpan TouchDoubleClickTime => DoubleClickTime;
}
}
diff --git a/src/Avalonia.Headless/HeadlessPlatformStubs.cs b/src/Avalonia.Headless/HeadlessPlatformStubs.cs
index ce4c31e27e..605659d464 100644
--- a/src/Avalonia.Headless/HeadlessPlatformStubs.cs
+++ b/src/Avalonia.Headless/HeadlessPlatformStubs.cs
@@ -67,6 +67,10 @@ namespace Avalonia.Headless
{
public Size DoubleClickSize { get; } = new Size(2, 2);
public TimeSpan DoubleClickTime { get; } = TimeSpan.FromMilliseconds(500);
+
+ public Size TouchDoubleClickSize => new Size(16,16);
+
+ public TimeSpan TouchDoubleClickTime => DoubleClickTime;
}
class HeadlessSystemDialogsStub : ISystemDialogImpl
diff --git a/src/Avalonia.Input/TouchDevice.cs b/src/Avalonia.Input/TouchDevice.cs
index 84974302eb..0069aa7961 100644
--- a/src/Avalonia.Input/TouchDevice.cs
+++ b/src/Avalonia.Input/TouchDevice.cs
@@ -58,7 +58,7 @@ namespace Avalonia.Input
}
else
{
- var settings = AvaloniaLocator.Current.GetRequiredService();
+ var settings = AvaloniaLocator.Current.GetRequiredService();
if (!_lastClickRect.Contains(args.Position)
|| ev.Timestamp - _lastClickTime > settings.TouchDoubleClickTime.TotalMilliseconds)
diff --git a/src/Avalonia.Native/AvaloniaNativePlatform.cs b/src/Avalonia.Native/AvaloniaNativePlatform.cs
index f2d7f741fc..5fa50f0e7f 100644
--- a/src/Avalonia.Native/AvaloniaNativePlatform.cs
+++ b/src/Avalonia.Native/AvaloniaNativePlatform.cs
@@ -11,7 +11,7 @@ using Avalonia.Rendering;
namespace Avalonia.Native
{
- class AvaloniaNativePlatform : IPlatformSettings, ITouchPlatformSettings, IWindowingPlatform
+ class AvaloniaNativePlatform : IPlatformSettings, IWindowingPlatform
{
private readonly IAvaloniaNativeFactory _factory;
private AvaloniaNativePlatformOptions _options;
@@ -26,10 +26,10 @@ namespace Avalonia.Native
public TimeSpan DoubleClickTime => TimeSpan.FromMilliseconds(500); //TODO
- ///
+ ///
public Size TouchDoubleClickSize => new Size(16, 16);
- ///
+ ///
public TimeSpan TouchDoubleClickTime => DoubleClickTime;
public static AvaloniaNativePlatform Initialize(IntPtr factory, AvaloniaNativePlatformOptions options)
@@ -108,7 +108,6 @@ namespace Avalonia.Native
.Bind().ToSingleton()
.Bind().ToConstant(KeyboardDevice)
.Bind().ToConstant(this)
- .Bind().ToConstant(this)
.Bind().ToConstant(this)
.Bind().ToConstant(new ClipboardImpl(_factory.CreateClipboard()))
.Bind().ToConstant(new RenderLoop())
diff --git a/src/Avalonia.Visuals/ApiCompatBaseline.txt b/src/Avalonia.Visuals/ApiCompatBaseline.txt
index ad9a5fd71a..dcb3246a63 100644
--- a/src/Avalonia.Visuals/ApiCompatBaseline.txt
+++ b/src/Avalonia.Visuals/ApiCompatBaseline.txt
@@ -79,4 +79,8 @@ InterfacesShouldHaveSameMembers : Interface member 'public Avalonia.Platform.IWr
InterfacesShouldHaveSameMembers : Interface member 'public Avalonia.Platform.IWriteableBitmapImpl Avalonia.Platform.IPlatformRenderInterface.LoadWriteableBitmap(System.String)' is present in the implementation but not in the contract.
InterfacesShouldHaveSameMembers : Interface member 'public Avalonia.Platform.IWriteableBitmapImpl Avalonia.Platform.IPlatformRenderInterface.LoadWriteableBitmapToHeight(System.IO.Stream, System.Int32, Avalonia.Visuals.Media.Imaging.BitmapInterpolationMode)' is present in the implementation but not in the contract.
InterfacesShouldHaveSameMembers : Interface member 'public Avalonia.Platform.IWriteableBitmapImpl Avalonia.Platform.IPlatformRenderInterface.LoadWriteableBitmapToWidth(System.IO.Stream, System.Int32, Avalonia.Visuals.Media.Imaging.BitmapInterpolationMode)' is present in the implementation but not in the contract.
-Total Issues: 79
+InterfacesShouldHaveSameMembers : Interface member 'public Avalonia.Size Avalonia.Platform.IPlatformSettings.TouchDoubleClickSize' is present in the implementation but not in the contract.
+InterfacesShouldHaveSameMembers : Interface member 'public System.TimeSpan Avalonia.Platform.IPlatformSettings.TouchDoubleClickTime' is present in the implementation but not in the contract.
+InterfacesShouldHaveSameMembers : Interface member 'public Avalonia.Size Avalonia.Platform.IPlatformSettings.TouchDoubleClickSize.get()' is present in the implementation but not in the contract.
+InterfacesShouldHaveSameMembers : Interface member 'public System.TimeSpan Avalonia.Platform.IPlatformSettings.TouchDoubleClickTime.get()' is present in the implementation but not in the contract.
+Total Issues: 84
diff --git a/src/Avalonia.Visuals/Platform/IPlatformSettings.cs b/src/Avalonia.Visuals/Platform/IPlatformSettings.cs
index bcb00df5d6..e4b28e6575 100644
--- a/src/Avalonia.Visuals/Platform/IPlatformSettings.cs
+++ b/src/Avalonia.Visuals/Platform/IPlatformSettings.cs
@@ -7,5 +7,15 @@ namespace Avalonia.Platform
Size DoubleClickSize { get; }
TimeSpan DoubleClickTime { get; }
+
+ ///
+ /// Determines the size of the area within that you should click twice in order for a double click to be counted.
+ ///
+ Size TouchDoubleClickSize { get; }
+
+ ///
+ /// Determines the time span that what will be used to determine the double-click.
+ ///
+ TimeSpan TouchDoubleClickTime { get; }
}
}
diff --git a/src/Avalonia.Visuals/Platform/ITouchPlatformSettings.cs b/src/Avalonia.Visuals/Platform/ITouchPlatformSettings.cs
deleted file mode 100644
index bf65870d1b..0000000000
--- a/src/Avalonia.Visuals/Platform/ITouchPlatformSettings.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-using System;
-
-namespace Avalonia.Platform
-{
- public interface ITouchPlatformSettings
- {
- ///
- /// Determines the size of the area within that you should click twice in order for a double click to be counted.
- ///
- Size TouchDoubleClickSize { get; }
-
- ///
- /// Determines the time span that what will be used to determine the double-click.
- ///
- TimeSpan TouchDoubleClickTime { get; }
- }
-}
diff --git a/src/Avalonia.X11/Stubs.cs b/src/Avalonia.X11/Stubs.cs
index e98153e5a9..f73512f1e8 100644
--- a/src/Avalonia.X11/Stubs.cs
+++ b/src/Avalonia.X11/Stubs.cs
@@ -3,15 +3,15 @@ using Avalonia.Platform;
namespace Avalonia.X11
{
- class PlatformSettingsStub : IPlatformSettings, ITouchPlatformSettings
+ class PlatformSettingsStub : IPlatformSettings
{
public Size DoubleClickSize { get; } = new Size(2, 2);
public TimeSpan DoubleClickTime { get; } = TimeSpan.FromMilliseconds(500);
- ///
+ ///
public Size TouchDoubleClickSize => new Size(16, 16);
- ///
+ ///
public TimeSpan TouchDoubleClickTime => DoubleClickTime;
}
}
diff --git a/src/Avalonia.X11/X11Platform.cs b/src/Avalonia.X11/X11Platform.cs
index e0d84e0a2e..ec3f29c806 100644
--- a/src/Avalonia.X11/X11Platform.cs
+++ b/src/Avalonia.X11/X11Platform.cs
@@ -68,7 +68,7 @@ namespace Avalonia.X11
//TODO: log
if (options.UseDBusMenu)
DBusHelper.TryInitialize();
- var platformSettingStub = new PlatformSettingsStub();
+
AvaloniaLocator.CurrentMutable.BindToSelf(this)
.Bind().ToConstant(this)
.Bind().ToConstant(new X11PlatformThreading(this))
@@ -78,8 +78,7 @@ namespace Avalonia.X11
.Bind().ToFunc(() => KeyboardDevice)
.Bind().ToConstant(new X11CursorFactory(Display))
.Bind().ToConstant(new X11Clipboard(this))
- .Bind().ToConstant(platformSettingStub)
- .Bind().ToConstant(platformSettingStub)
+ .Bind().ToConstant(new PlatformSettingsStub())
.Bind().ToConstant(new X11IconLoader(Info))
.Bind().ToConstant(new GtkSystemDialog())
.Bind().ToConstant(new LinuxMountedVolumeInfoProvider())
diff --git a/src/Linux/Avalonia.LinuxFramebuffer/Stubs.cs b/src/Linux/Avalonia.LinuxFramebuffer/Stubs.cs
index 642be28c69..dd60d5f09d 100644
--- a/src/Linux/Avalonia.LinuxFramebuffer/Stubs.cs
+++ b/src/Linux/Avalonia.LinuxFramebuffer/Stubs.cs
@@ -18,5 +18,9 @@ namespace Avalonia.LinuxFramebuffer
{
public Size DoubleClickSize { get; } = new Size(4, 4);
public TimeSpan DoubleClickTime { get; } = new TimeSpan(0, 0, 0, 0, 500);
+
+ public Size TouchDoubleClickSize => new Size(16,16);
+
+ public TimeSpan TouchDoubleClickTime => DoubleClickTime;
}
}
diff --git a/src/Web/Avalonia.Web.Blazor/WindowingPlatform.cs b/src/Web/Avalonia.Web.Blazor/WindowingPlatform.cs
index f30a36b8c9..979e66a785 100644
--- a/src/Web/Avalonia.Web.Blazor/WindowingPlatform.cs
+++ b/src/Web/Avalonia.Web.Blazor/WindowingPlatform.cs
@@ -51,6 +51,9 @@ namespace Avalonia.Web.Blazor
public TimeSpan DoubleClickTime { get; } = TimeSpan.FromMilliseconds(500);
+ public Size TouchDoubleClickSize => new Size(16, 16);
+
+ public TimeSpan TouchDoubleClickTime => DoubleClickTime;
public void RunLoop(CancellationToken cancellationToken)
{
throw new NotSupportedException();
diff --git a/src/Windows/Avalonia.Win32/Win32Platform.cs b/src/Windows/Avalonia.Win32/Win32Platform.cs
index d1196bbc8d..5cfbab40e4 100644
--- a/src/Windows/Avalonia.Win32/Win32Platform.cs
+++ b/src/Windows/Avalonia.Win32/Win32Platform.cs
@@ -101,7 +101,7 @@ namespace Avalonia
namespace Avalonia.Win32
{
- public class Win32Platform : IPlatformThreadingInterface, IPlatformSettings, ITouchPlatformSettings, IWindowingPlatform, IPlatformIconLoader, IPlatformLifetimeEventsImpl
+ public class Win32Platform : IPlatformThreadingInterface, IPlatformSettings, IWindowingPlatform, IPlatformIconLoader, IPlatformLifetimeEventsImpl
{
private static readonly Win32Platform s_instance = new Win32Platform();
private static Thread _uiThread;
@@ -134,10 +134,10 @@ namespace Avalonia.Win32
public TimeSpan DoubleClickTime => TimeSpan.FromMilliseconds(UnmanagedMethods.GetDoubleClickTime());
- ///
+ ///
public Size TouchDoubleClickSize => new Size(16,16);
- ///
+ ///
public TimeSpan TouchDoubleClickTime => DoubleClickTime;
public static void Initialize()
{
@@ -151,7 +151,6 @@ namespace Avalonia.Win32
.Bind().ToSingleton()
.Bind().ToConstant(CursorFactory.Instance)
.Bind().ToConstant(WindowsKeyboardDevice.Instance)
- .Bind().ToConstant(s_instance)
.Bind().ToConstant(s_instance)
.Bind().ToConstant(s_instance)
.Bind().ToConstant(new RenderLoop())
diff --git a/src/iOS/Avalonia.iOS/Platform.cs b/src/iOS/Avalonia.iOS/Platform.cs
index fa0db4518f..88f60ace1f 100644
--- a/src/iOS/Avalonia.iOS/Platform.cs
+++ b/src/iOS/Avalonia.iOS/Platform.cs
@@ -1,11 +1,9 @@
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
{
@@ -13,15 +11,19 @@ namespace Avalonia.iOS
{
public static EaglFeature GlFeature;
public static DisplayLinkTimer Timer;
- class PlatformSettings : ITouchPlatformSettings
+ class PlatformSettings : IPlatformSettings
{
- ///
+ ///
public Size TouchDoubleClickSize => new Size(10, 10);
- ///
+ ///
public TimeSpan TouchDoubleClickTime => TimeSpan.FromMilliseconds(500);
+
+ public Size DoubleClickSize => new Size(4, 4);
+
+ public TimeSpan DoubleClickTime => TouchDoubleClickTime;
}
-
+
public static void Register()
{
GlFeature ??= new EaglFeature();
@@ -33,7 +35,7 @@ namespace Avalonia.iOS
.Bind().ToConstant(new CursorFactoryStub())
.Bind().ToConstant(new WindowingPlatformStub())
.Bind().ToConstant(new ClipboardImpl())
- .Bind().ToConstant(new PlatformSettings())
+ .Bind().ToConstant(new PlatformSettings())
.Bind().ToConstant(new PlatformIconLoaderStub())
.Bind().ToSingleton()
.Bind().ToSingleton()
diff --git a/tests/Avalonia.Input.UnitTests/TouchDeviceTests.cs b/tests/Avalonia.Input.UnitTests/TouchDeviceTests.cs
index 14b7df7260..80c5a45c1a 100644
--- a/tests/Avalonia.Input.UnitTests/TouchDeviceTests.cs
+++ b/tests/Avalonia.Input.UnitTests/TouchDeviceTests.cs
@@ -208,10 +208,10 @@ namespace Avalonia.Input.UnitTests
{
var unitTestApp = UnitTestApplication.Start(
new TestServices(inputManager: new InputManager()));
- var iSettingsMock = new Mock();
+ var iSettingsMock = new Mock();
iSettingsMock.Setup(x => x.TouchDoubleClickTime).Returns(doubleClickTime);
AvaloniaLocator.CurrentMutable.BindToSelf(this)
- .Bind().ToConstant(iSettingsMock.Object);
+ .Bind().ToConstant(iSettingsMock.Object);
return unitTestApp;
}