Browse Source

Move PlatformHotkeyConfiguration to IPlatformSettings

pull/11564/head
Max Katz 3 years ago
parent
commit
d267d06a08
  1. 9
      src/Avalonia.Base/Input/Platform/PlatformHotkeyConfiguration.cs
  2. 7
      src/Avalonia.Base/Platform/DefaultPlatformSettings.cs
  3. 6
      src/Avalonia.Base/Platform/IPlatformSettings.cs
  4. 30
      src/Avalonia.Controls.DataGrid/DataGrid.cs
  5. 2
      src/Avalonia.Controls.DataGrid/DataGridColumn.cs
  6. 2
      src/Avalonia.Controls.DataGrid/DataGridColumnHeader.cs
  7. 12
      src/Avalonia.Controls.DataGrid/Utils/KeyboardHelper.cs
  8. 2
      src/Avalonia.Controls/ContextMenu.cs
  9. 2
      src/Avalonia.Controls/Control.cs
  10. 3
      src/Avalonia.Controls/Flyouts/PopupFlyoutBase.cs
  11. 5
      src/Avalonia.Controls/ListBox.cs
  12. 3
      src/Avalonia.Controls/MaskedTextBox.cs
  13. 2
      src/Avalonia.Controls/SelectableTextBlock.cs
  14. 8
      src/Avalonia.Controls/TextBox.cs
  15. 2
      src/Avalonia.Controls/TopLevel.cs
  16. 5
      src/Avalonia.Controls/TreeView.cs
  17. 16
      src/Avalonia.Native/AvaloniaNativePlatform.cs
  18. 6
      tests/Avalonia.Controls.UnitTests/TreeViewTests.cs
  19. 3
      tests/Avalonia.UnitTests/UnitTestApplication.cs

9
src/Avalonia.Base/Input/Platform/PlatformHotkeyConfiguration.cs

@ -8,15 +8,6 @@ namespace Avalonia.Input.Platform
/// </summary>
public sealed class PlatformHotkeyConfiguration
{
/// <summary>
/// Retrieves shared static instance of PlatformHotkeyConfiguration.
/// </summary>
/// <remarks>
/// Return value might be null, when application wasn't yet initialized.
/// </remarks>
public static PlatformHotkeyConfiguration? Instance =>
AvaloniaLocator.Current.GetService<PlatformHotkeyConfiguration>();
[PrivateApi]
public PlatformHotkeyConfiguration() : this(KeyModifiers.Control)
{

7
src/Avalonia.Base/Platform/DefaultPlatformSettings.cs

@ -1,7 +1,9 @@
using System;
using Avalonia.Input;
using Avalonia.Input.Platform;
using Avalonia.Media;
using Avalonia.Metadata;
using Avalonia.VisualTree;
namespace Avalonia.Platform
{
@ -30,7 +32,10 @@ namespace Avalonia.Platform
public virtual TimeSpan GetDoubleTapTime(PointerType type) => TimeSpan.FromMilliseconds(500);
public virtual TimeSpan HoldWaitDuration => TimeSpan.FromMilliseconds(300);
public PlatformHotkeyConfiguration HotkeyConfiguration =>
AvaloniaLocator.Current.GetRequiredService<PlatformHotkeyConfiguration>();
public virtual PlatformColorValues GetColorValues()
{
return new PlatformColorValues

6
src/Avalonia.Base/Platform/IPlatformSettings.cs

@ -1,5 +1,6 @@
using System;
using Avalonia.Input;
using Avalonia.Input.Platform;
using Avalonia.Metadata;
namespace Avalonia.Platform
@ -37,6 +38,11 @@ namespace Avalonia.Platform
/// </summary>
TimeSpan HoldWaitDuration { get; }
/// <summary>
/// Get a configuration for platform-specific hotkeys in an Avalonia application.
/// </summary>
PlatformHotkeyConfiguration HotkeyConfiguration { get; }
/// <summary>
/// Gets current system color values including dark mode and accent colors.
/// </summary>

30
src/Avalonia.Controls.DataGrid/DataGrid.cs

@ -2660,25 +2660,25 @@ namespace Avalonia.Controls
internal bool ProcessDownKey(KeyEventArgs e)
{
KeyboardHelper.GetMetaKeyState(e.KeyModifiers, out bool ctrl, out bool shift);
KeyboardHelper.GetMetaKeyState(this, e.KeyModifiers, out bool ctrl, out bool shift);
return ProcessDownKeyInternal(shift, ctrl);
}
internal bool ProcessEndKey(KeyEventArgs e)
{
KeyboardHelper.GetMetaKeyState(e.KeyModifiers, out bool ctrl, out bool shift);
KeyboardHelper.GetMetaKeyState(this, e.KeyModifiers, out bool ctrl, out bool shift);
return ProcessEndKey(shift, ctrl);
}
internal bool ProcessEnterKey(KeyEventArgs e)
{
KeyboardHelper.GetMetaKeyState(e.KeyModifiers, out bool ctrl, out bool shift);
KeyboardHelper.GetMetaKeyState(this, e.KeyModifiers, out bool ctrl, out bool shift);
return ProcessEnterKey(shift, ctrl);
}
internal bool ProcessHomeKey(KeyEventArgs e)
{
KeyboardHelper.GetMetaKeyState(e.KeyModifiers, out bool ctrl, out bool shift);
KeyboardHelper.GetMetaKeyState(this, e.KeyModifiers, out bool ctrl, out bool shift);
return ProcessHomeKey(shift, ctrl);
}
@ -2718,25 +2718,25 @@ namespace Avalonia.Controls
internal bool ProcessLeftKey(KeyEventArgs e)
{
KeyboardHelper.GetMetaKeyState(e.KeyModifiers, out bool ctrl, out bool shift);
KeyboardHelper.GetMetaKeyState(this, e.KeyModifiers, out bool ctrl, out bool shift);
return ProcessLeftKey(shift, ctrl);
}
internal bool ProcessNextKey(KeyEventArgs e)
{
KeyboardHelper.GetMetaKeyState(e.KeyModifiers, out bool ctrl, out bool shift);
KeyboardHelper.GetMetaKeyState(this, e.KeyModifiers, out bool ctrl, out bool shift);
return ProcessNextKey(shift, ctrl);
}
internal bool ProcessPriorKey(KeyEventArgs e)
{
KeyboardHelper.GetMetaKeyState(e.KeyModifiers, out bool ctrl, out bool shift);
KeyboardHelper.GetMetaKeyState(this, e.KeyModifiers, out bool ctrl, out bool shift);
return ProcessPriorKey(shift, ctrl);
}
internal bool ProcessRightKey(KeyEventArgs e)
{
KeyboardHelper.GetMetaKeyState(e.KeyModifiers, out bool ctrl, out bool shift);
KeyboardHelper.GetMetaKeyState(this, e.KeyModifiers, out bool ctrl, out bool shift);
return ProcessRightKey(shift, ctrl);
}
@ -2854,7 +2854,7 @@ namespace Avalonia.Controls
internal bool ProcessUpKey(KeyEventArgs e)
{
KeyboardHelper.GetMetaKeyState(e.KeyModifiers, out bool ctrl, out bool shift);
KeyboardHelper.GetMetaKeyState(this, e.KeyModifiers, out bool ctrl, out bool shift);
return ProcessUpKey(shift, ctrl);
}
@ -3124,13 +3124,13 @@ namespace Avalonia.Controls
//TODO: Ensure right button is checked for
internal bool UpdateStateOnMouseRightButtonDown(PointerPressedEventArgs pointerPressedEventArgs, int columnIndex, int slot, bool allowEdit)
{
KeyboardHelper.GetMetaKeyState(pointerPressedEventArgs.KeyModifiers, out bool ctrl, out bool shift);
KeyboardHelper.GetMetaKeyState(this, pointerPressedEventArgs.KeyModifiers, out bool ctrl, out bool shift);
return UpdateStateOnMouseRightButtonDown(pointerPressedEventArgs, columnIndex, slot, allowEdit, shift, ctrl);
}
//TODO: Ensure left button is checked for
internal bool UpdateStateOnMouseLeftButtonDown(PointerPressedEventArgs pointerPressedEventArgs, int columnIndex, int slot, bool allowEdit)
{
KeyboardHelper.GetMetaKeyState(pointerPressedEventArgs.KeyModifiers, out bool ctrl, out bool shift);
KeyboardHelper.GetMetaKeyState(this, pointerPressedEventArgs.KeyModifiers, out bool ctrl, out bool shift);
return UpdateStateOnMouseLeftButtonDown(pointerPressedEventArgs, columnIndex, slot, allowEdit, shift, ctrl);
}
@ -4654,7 +4654,7 @@ namespace Avalonia.Controls
private bool ProcessAKey(KeyEventArgs e)
{
KeyboardHelper.GetMetaKeyState(e.KeyModifiers, out bool ctrl, out bool shift, out bool alt);
KeyboardHelper.GetMetaKeyState(this, e.KeyModifiers, out bool ctrl, out bool shift, out bool alt);
if (ctrl && !shift && !alt && SelectionMode == DataGridSelectionMode.Extended)
{
@ -4923,7 +4923,7 @@ namespace Avalonia.Controls
private bool ProcessF2Key(KeyEventArgs e)
{
KeyboardHelper.GetMetaKeyState(e.KeyModifiers, out bool ctrl, out bool shift);
KeyboardHelper.GetMetaKeyState(this, e.KeyModifiers, out bool ctrl, out bool shift);
if (!shift && !ctrl &&
_editingColumnIndex == -1 && CurrentColumnIndex != -1 && GetRowSelection(CurrentSlot) &&
@ -5280,7 +5280,7 @@ namespace Avalonia.Controls
private bool ProcessTabKey(KeyEventArgs e)
{
KeyboardHelper.GetMetaKeyState(e.KeyModifiers, out bool ctrl, out bool shift);
KeyboardHelper.GetMetaKeyState(this, e.KeyModifiers, out bool ctrl, out bool shift);
return ProcessTabKey(e, shift, ctrl);
}
@ -6099,7 +6099,7 @@ namespace Avalonia.Controls
/// <returns>Whether or not the DataGrid handled the key press.</returns>
private bool ProcessCopyKey(KeyModifiers modifiers)
{
KeyboardHelper.GetMetaKeyState(modifiers, out bool ctrl, out bool shift, out bool alt);
KeyboardHelper.GetMetaKeyState(this, modifiers, out bool ctrl, out bool shift, out bool alt);
if (ctrl && !shift && !alt && ClipboardCopyMode != DataGridClipboardCopyMode.None && SelectedItems.Count > 0)
{

2
src/Avalonia.Controls.DataGrid/DataGridColumn.cs

@ -703,7 +703,7 @@ namespace Avalonia.Controls
public void ClearSort()
{
//InvokeProcessSort is already validating if sorting is possible
_headerCell?.InvokeProcessSort(KeyboardHelper.GetPlatformCtrlOrCmdKeyModifier());
_headerCell?.InvokeProcessSort(KeyboardHelper.GetPlatformCtrlOrCmdKeyModifier(OwningGrid));
}
/// <summary>

2
src/Avalonia.Controls.DataGrid/DataGridColumnHeader.cs

@ -241,7 +241,7 @@ namespace Avalonia.Controls
DataGrid owningGrid = OwningGrid;
DataGridSortDescription newSort;
KeyboardHelper.GetMetaKeyState(keyModifiers, out bool ctrl, out bool shift);
KeyboardHelper.GetMetaKeyState(this, keyModifiers, out bool ctrl, out bool shift);
DataGridSortDescription sort = OwningColumn.GetSortDescription();
IDataGridCollectionView collectionView = owningGrid.DataConnection.CollectionView;

12
src/Avalonia.Controls.DataGrid/Utils/KeyboardHelper.cs

@ -10,22 +10,22 @@ namespace Avalonia.Controls.Utils
{
internal static class KeyboardHelper
{
public static void GetMetaKeyState(KeyModifiers modifiers, out bool ctrlOrCmd, out bool shift)
public static void GetMetaKeyState(Control target, KeyModifiers modifiers, out bool ctrlOrCmd, out bool shift)
{
ctrlOrCmd = modifiers.HasFlag(GetPlatformCtrlOrCmdKeyModifier());
ctrlOrCmd = modifiers.HasFlag(GetPlatformCtrlOrCmdKeyModifier(target));
shift = modifiers.HasFlag(KeyModifiers.Shift);
}
public static void GetMetaKeyState(KeyModifiers modifiers, out bool ctrlOrCmd, out bool shift, out bool alt)
public static void GetMetaKeyState(Control target, KeyModifiers modifiers, out bool ctrlOrCmd, out bool shift, out bool alt)
{
ctrlOrCmd = modifiers.HasFlag(GetPlatformCtrlOrCmdKeyModifier());
ctrlOrCmd = modifiers.HasFlag(GetPlatformCtrlOrCmdKeyModifier(target));
shift = modifiers.HasFlag(KeyModifiers.Shift);
alt = modifiers.HasFlag(KeyModifiers.Alt);
}
public static KeyModifiers GetPlatformCtrlOrCmdKeyModifier()
public static KeyModifiers GetPlatformCtrlOrCmdKeyModifier(Control target)
{
var keymap = PlatformHotkeyConfiguration.Instance;
var keymap = TopLevel.GetTopLevel(target)!.PlatformSettings!.HotkeyConfiguration;
return keymap.CommandModifiers;
}
}

2
src/Avalonia.Controls/ContextMenu.cs

@ -405,7 +405,7 @@ namespace Avalonia.Controls
{
if (IsOpen)
{
var keymap = PlatformHotkeyConfiguration.Instance;
var keymap = Application.Current!.PlatformSettings!.HotkeyConfiguration;
if (keymap?.OpenContextMenu.Any(k => k.Matches(e)) == true
&& !CancelClosing())

2
src/Avalonia.Controls/Control.cs

@ -480,7 +480,7 @@ namespace Avalonia.Controls
if (e.Source == this
&& !e.Handled)
{
var keymap = PlatformHotkeyConfiguration.Instance?.OpenContextMenu;
var keymap = Application.Current!.PlatformSettings?.HotkeyConfiguration.OpenContextMenu;
if (keymap is null)
{

3
src/Avalonia.Controls/Flyouts/PopupFlyoutBase.cs

@ -9,6 +9,7 @@ using Avalonia.Input.Raw;
using Avalonia.Layout;
using Avalonia.Logging;
using Avalonia.Reactive;
using Avalonia.VisualTree;
namespace Avalonia.Controls.Primitives
{
@ -392,7 +393,7 @@ namespace Avalonia.Controls.Primitives
&& IsOpen
&& Target?.ContextFlyout == this)
{
var keymap = PlatformHotkeyConfiguration.Instance;
var keymap = Application.Current!.PlatformSettings?.HotkeyConfiguration;
if (keymap?.OpenContextMenu.Any(k => k.Matches(e)) == true)
{

5
src/Avalonia.Controls/ListBox.cs

@ -9,6 +9,7 @@ using Avalonia.Controls.Selection;
using Avalonia.Controls.Templates;
using Avalonia.Input;
using Avalonia.Input.Platform;
using Avalonia.VisualTree;
namespace Avalonia.Controls
{
@ -127,7 +128,7 @@ namespace Avalonia.Controls
protected override void OnKeyDown(KeyEventArgs e)
{
var hotkeys = PlatformHotkeyConfiguration.Instance;
var hotkeys = Application.Current!.PlatformSettings?.HotkeyConfiguration;
var ctrl = hotkeys is not null && e.KeyModifiers.HasAllFlags(hotkeys.CommandModifiers);
if (!ctrl &&
@ -165,7 +166,7 @@ namespace Avalonia.Controls
internal bool UpdateSelectionFromPointerEvent(Control source, PointerEventArgs e)
{
var hotkeys = PlatformHotkeyConfiguration.Instance;
var hotkeys = Application.Current!.PlatformSettings?.HotkeyConfiguration;
var toggle = hotkeys is not null && e.KeyModifiers.HasAllFlags(hotkeys.CommandModifiers);
return UpdateSelectionFromEventSource(

3
src/Avalonia.Controls/MaskedTextBox.cs

@ -7,6 +7,7 @@ using Avalonia.Input;
using Avalonia.Input.Platform;
using Avalonia.Interactivity;
using Avalonia.Styling;
using Avalonia.VisualTree;
namespace Avalonia.Controls
{
@ -204,7 +205,7 @@ namespace Avalonia.Controls
return;
}
var keymap = PlatformHotkeyConfiguration.Instance;
var keymap = Application.Current!.PlatformSettings?.HotkeyConfiguration;
bool Match(List<KeyGesture> gestures) => gestures.Any(g => g.Matches(e));

2
src/Avalonia.Controls/SelectableTextBlock.cs

@ -198,7 +198,7 @@ namespace Avalonia.Controls
var handled = false;
var modifiers = e.KeyModifiers;
var keymap = PlatformHotkeyConfiguration.Instance!;
var keymap = Application.Current!.PlatformSettings!.HotkeyConfiguration;
bool Match(List<KeyGesture> gestures) => gestures.Any(g => g.Matches(e));

8
src/Avalonia.Controls/TextBox.cs

@ -32,17 +32,17 @@ namespace Avalonia.Controls
/// <summary>
/// Gets a platform-specific <see cref="KeyGesture"/> for the Cut action
/// </summary>
public static KeyGesture? CutGesture { get; } = PlatformHotkeyConfiguration.Instance?.Cut.FirstOrDefault();
public static KeyGesture? CutGesture => Application.Current?.PlatformSettings?.HotkeyConfiguration.Cut.FirstOrDefault();
/// <summary>
/// Gets a platform-specific <see cref="KeyGesture"/> for the Copy action
/// </summary>
public static KeyGesture? CopyGesture { get; } = PlatformHotkeyConfiguration.Instance?.Copy.FirstOrDefault();
public static KeyGesture? CopyGesture => Application.Current?.PlatformSettings?.HotkeyConfiguration.Copy.FirstOrDefault();
/// <summary>
/// Gets a platform-specific <see cref="KeyGesture"/> for the Paste action
/// </summary>
public static KeyGesture? PasteGesture { get; } = PlatformHotkeyConfiguration.Instance?.Paste.FirstOrDefault();
public static KeyGesture? PasteGesture => Application.Current?.PlatformSettings?.HotkeyConfiguration.Paste.FirstOrDefault();
/// <summary>
/// Defines the <see cref="AcceptsReturn"/> property
@ -1100,7 +1100,7 @@ namespace Avalonia.Controls
var handled = false;
var modifiers = e.KeyModifiers;
var keymap = PlatformHotkeyConfiguration.Instance!;
var keymap = Application.Current!.PlatformSettings!.HotkeyConfiguration;
bool Match(List<KeyGesture> gestures) => gestures.Any(g => g.Matches(e));
bool DetectSelection() => e.KeyModifiers.HasAllFlags(keymap.SelectionModifiers);

2
src/Avalonia.Controls/TopLevel.cs

@ -250,7 +250,7 @@ namespace Avalonia.Controls
if (e is RawKeyEventArgs rawKeyEventArgs && rawKeyEventArgs.Type == RawKeyEventType.KeyDown)
{
var keymap = PlatformHotkeyConfiguration.Instance?.Back;
var keymap = PlatformSettings?.HotkeyConfiguration.Back;
if (keymap != null)
{

5
src/Avalonia.Controls/TreeView.cs

@ -571,7 +571,7 @@ namespace Avalonia.Controls
if (!e.Handled)
{
var keymap = PlatformHotkeyConfiguration.Instance;
var keymap = Application.Current!.PlatformSettings!.HotkeyConfiguration;
bool Match(List<KeyGesture>? gestures) => gestures?.Any(g => g.Matches(e)) ?? false;
if (this.SelectionMode == SelectionMode.Multiple && Match(keymap?.SelectAll))
@ -652,11 +652,12 @@ namespace Avalonia.Controls
if (point.Properties.IsLeftButtonPressed || point.Properties.IsRightButtonPressed)
{
var keymap = Application.Current!.PlatformSettings!.HotkeyConfiguration;
e.Handled = UpdateSelectionFromEventSource(
e.Source,
true,
e.KeyModifiers.HasAllFlags(KeyModifiers.Shift),
e.KeyModifiers.HasAllFlags(PlatformHotkeyConfiguration.Instance!.CommandModifiers),
e.KeyModifiers.HasAllFlags(keymap.CommandModifiers),
point.Properties.IsRightButtonPressed);
}
}

16
src/Avalonia.Native/AvaloniaNativePlatform.cs

@ -108,20 +108,18 @@ namespace Avalonia.Native
.Bind<IWindowingPlatform>().ToConstant(this)
.Bind<IClipboard>().ToConstant(new ClipboardImpl(_factory.CreateClipboard()))
.Bind<IRenderTimer>().ToConstant(new DefaultRenderTimer(60))
.Bind<PlatformHotkeyConfiguration>().ToConstant(new PlatformHotkeyConfiguration(KeyModifiers.Meta, wholeWordTextActionModifiers: KeyModifiers.Alt))
.Bind<IMountedVolumeInfoProvider>().ToConstant(new MacOSMountedVolumeInfoProvider())
.Bind<IPlatformDragSource>().ToConstant(new AvaloniaNativeDragSource(_factory))
.Bind<IPlatformLifetimeEventsImpl>().ToConstant(applicationPlatform)
.Bind<INativeApplicationCommands>().ToConstant(new MacOSNativeMenuCommands(_factory.CreateApplicationCommands()));
var hotkeys = PlatformHotkeyConfiguration.Instance;
if (hotkeys is not null)
{
hotkeys.MoveCursorToTheStartOfLine.Add(new KeyGesture(Key.Left, hotkeys.CommandModifiers));
hotkeys.MoveCursorToTheStartOfLineWithSelection.Add(new KeyGesture(Key.Left, hotkeys.CommandModifiers | hotkeys.SelectionModifiers));
hotkeys.MoveCursorToTheEndOfLine.Add(new KeyGesture(Key.Right, hotkeys.CommandModifiers));
hotkeys.MoveCursorToTheEndOfLineWithSelection.Add(new KeyGesture(Key.Right, hotkeys.CommandModifiers | hotkeys.SelectionModifiers));
}
var hotkeys = new PlatformHotkeyConfiguration(KeyModifiers.Meta, wholeWordTextActionModifiers: KeyModifiers.Alt);
hotkeys.MoveCursorToTheStartOfLine.Add(new KeyGesture(Key.Left, hotkeys.CommandModifiers));
hotkeys.MoveCursorToTheStartOfLineWithSelection.Add(new KeyGesture(Key.Left, hotkeys.CommandModifiers | hotkeys.SelectionModifiers));
hotkeys.MoveCursorToTheEndOfLine.Add(new KeyGesture(Key.Right, hotkeys.CommandModifiers));
hotkeys.MoveCursorToTheEndOfLineWithSelection.Add(new KeyGesture(Key.Right, hotkeys.CommandModifiers | hotkeys.SelectionModifiers));
AvaloniaLocator.CurrentMutable.Bind<PlatformHotkeyConfiguration>().ToConstant(hotkeys);
if (_options.UseGpu)
{

6
tests/Avalonia.Controls.UnitTests/TreeViewTests.cs

@ -1045,7 +1045,7 @@ namespace Avalonia.Controls.UnitTests
var data = CreateTestTreeData();
var target = CreateTarget(data: data, multiSelect: true);
var rootNode = data[0];
var keymap = PlatformHotkeyConfiguration.Instance!;
var keymap = Application.Current!.PlatformSettings!.HotkeyConfiguration;
var selectAllGesture = keymap.SelectAll.First();
var keyEvent = new KeyEventArgs
@ -1075,7 +1075,7 @@ namespace Avalonia.Controls.UnitTests
ClickContainer(fromContainer, KeyModifiers.None);
ClickContainer(toContainer, KeyModifiers.Shift);
var keymap = PlatformHotkeyConfiguration.Instance!;
var keymap = Application.Current!.PlatformSettings!.HotkeyConfiguration;
var selectAllGesture = keymap.SelectAll.First();
var keyEvent = new KeyEventArgs
@ -1105,7 +1105,7 @@ namespace Avalonia.Controls.UnitTests
ClickContainer(fromContainer, KeyModifiers.None);
ClickContainer(toContainer, KeyModifiers.Shift);
var keymap = PlatformHotkeyConfiguration.Instance!;
var keymap = Application.Current!.PlatformSettings!.HotkeyConfiguration;
var selectAllGesture = keymap.SelectAll.First();
var keyEvent = new KeyEventArgs

3
tests/Avalonia.UnitTests/UnitTestApplication.cs

@ -77,7 +77,8 @@ namespace Avalonia.UnitTests
.Bind<IDispatcherImpl>().ToConstant(Services.DispatcherImpl)
.Bind<ICursorFactory>().ToConstant(Services.StandardCursorFactory)
.Bind<IWindowingPlatform>().ToConstant(Services.WindowingPlatform)
.Bind<PlatformHotkeyConfiguration>().ToSingleton<PlatformHotkeyConfiguration>();
.Bind<PlatformHotkeyConfiguration>().ToSingleton<PlatformHotkeyConfiguration>()
.Bind<IPlatformSettings>().ToSingleton<DefaultPlatformSettings>();
// This is a hack to make tests work, we need to refactor the way font manager is registered
// See https://github.com/AvaloniaUI/Avalonia/issues/10081

Loading…
Cancel
Save