From 0041401e252bd9aad146623def90f90d28e6899c Mon Sep 17 00:00:00 2001 From: Max Katz Date: Mon, 29 May 2023 18:04:38 -0400 Subject: [PATCH] Introduce IPlatformSettings to the public API --- src/Avalonia.Base/Input/IInputRoot.cs | 11 ++++++++++- src/Avalonia.Base/Platform/DefaultPlatformSettings.cs | 2 ++ src/Avalonia.Base/Platform/IPlatformSettings.cs | 6 +++++- src/Avalonia.Controls/TopLevel.cs | 3 +++ 4 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/Avalonia.Base/Input/IInputRoot.cs b/src/Avalonia.Base/Input/IInputRoot.cs index d0921eea2d..f358658005 100644 --- a/src/Avalonia.Base/Input/IInputRoot.cs +++ b/src/Avalonia.Base/Input/IInputRoot.cs @@ -1,4 +1,5 @@ using Avalonia.Metadata; +using Avalonia.Platform; namespace Avalonia.Input { @@ -17,10 +18,18 @@ namespace Avalonia.Input /// Gets focus manager of the root. /// /// - /// Focus manager can be null only if application wasn't initialized yet. + /// Focus manager can be null only if window wasn't initialized yet. /// IFocusManager? FocusManager { get; } + /// + /// Represents a contract for accessing platform-specific settings and information. + /// + /// + /// Focus manager can be null only if window wasn't initialized yet. + /// + IPlatformSettings? PlatformSettings { get; } + /// /// Gets or sets the input element that the pointer is currently over. /// diff --git a/src/Avalonia.Base/Platform/DefaultPlatformSettings.cs b/src/Avalonia.Base/Platform/DefaultPlatformSettings.cs index 08fcdb50aa..54528efec1 100644 --- a/src/Avalonia.Base/Platform/DefaultPlatformSettings.cs +++ b/src/Avalonia.Base/Platform/DefaultPlatformSettings.cs @@ -1,12 +1,14 @@ using System; using Avalonia.Input; using Avalonia.Media; +using Avalonia.Metadata; namespace Avalonia.Platform { /// /// A default implementation of for platforms. /// + [PrivateApi] public class DefaultPlatformSettings : IPlatformSettings { public virtual Size GetTapSize(PointerType type) diff --git a/src/Avalonia.Base/Platform/IPlatformSettings.cs b/src/Avalonia.Base/Platform/IPlatformSettings.cs index b167cf0edc..c5d46cb7e6 100644 --- a/src/Avalonia.Base/Platform/IPlatformSettings.cs +++ b/src/Avalonia.Base/Platform/IPlatformSettings.cs @@ -4,7 +4,11 @@ using Avalonia.Metadata; namespace Avalonia.Platform { - [Unstable] + /// + /// The interface represents a contract for accessing platform-specific settings and information. + /// Some of these settings might be changed by used globally in the OS in runtime. + /// + [NotClientImplementable] public interface IPlatformSettings { /// diff --git a/src/Avalonia.Controls/TopLevel.cs b/src/Avalonia.Controls/TopLevel.cs index ec6b3f7421..be9df4188d 100644 --- a/src/Avalonia.Controls/TopLevel.cs +++ b/src/Avalonia.Controls/TopLevel.cs @@ -487,6 +487,9 @@ namespace Avalonia.Controls /// public IFocusManager? FocusManager => AvaloniaLocator.Current.GetService(); + /// + public IPlatformSettings? PlatformSettings => AvaloniaLocator.Current.GetService(); + /// Point IRenderRoot.PointToClient(PixelPoint p) {