diff --git a/src/Avalonia.Controls.DataGrid/Utils/KeyboardHelper.cs b/src/Avalonia.Controls.DataGrid/Utils/KeyboardHelper.cs index d2b1fd4b8e..78b349fd23 100644 --- a/src/Avalonia.Controls.DataGrid/Utils/KeyboardHelper.cs +++ b/src/Avalonia.Controls.DataGrid/Utils/KeyboardHelper.cs @@ -24,9 +24,9 @@ namespace Avalonia.Controls.Utils } public static KeyModifiers GetPlatformCtrlOrCmdKeyModifier() - { - var keymap = AvaloniaLocator.Current.GetService(); - return keymap?.CommandModifiers ?? KeyModifiers.Control; + { + var keymap = PlatformHotkeyConfiguration.Instance; + return keymap.CommandModifiers; } } } diff --git a/src/Avalonia.Controls/ContextMenu.cs b/src/Avalonia.Controls/ContextMenu.cs index 3dc1514667..238ccd091c 100644 --- a/src/Avalonia.Controls/ContextMenu.cs +++ b/src/Avalonia.Controls/ContextMenu.cs @@ -405,7 +405,7 @@ namespace Avalonia.Controls { if (IsOpen) { - var keymap = AvaloniaLocator.Current.GetService(); + var keymap = PlatformHotkeyConfiguration.Instance; if (keymap?.OpenContextMenu.Any(k => k.Matches(e)) == true && !CancelClosing()) diff --git a/src/Avalonia.Controls/Control.cs b/src/Avalonia.Controls/Control.cs index 8d140bdd62..4a9737a267 100644 --- a/src/Avalonia.Controls/Control.cs +++ b/src/Avalonia.Controls/Control.cs @@ -480,7 +480,7 @@ namespace Avalonia.Controls if (e.Source == this && !e.Handled) { - var keymap = AvaloniaLocator.Current.GetService()?.OpenContextMenu; + var keymap = PlatformHotkeyConfiguration.Instance?.OpenContextMenu; if (keymap is null) { diff --git a/src/Avalonia.Controls/Flyouts/PopupFlyoutBase.cs b/src/Avalonia.Controls/Flyouts/PopupFlyoutBase.cs index 7fd9fad605..c94200ac8b 100644 --- a/src/Avalonia.Controls/Flyouts/PopupFlyoutBase.cs +++ b/src/Avalonia.Controls/Flyouts/PopupFlyoutBase.cs @@ -392,7 +392,7 @@ namespace Avalonia.Controls.Primitives && IsOpen && Target?.ContextFlyout == this) { - var keymap = AvaloniaLocator.Current.GetService(); + var keymap = PlatformHotkeyConfiguration.Instance; if (keymap?.OpenContextMenu.Any(k => k.Matches(e)) == true) { diff --git a/src/Avalonia.Controls/ListBox.cs b/src/Avalonia.Controls/ListBox.cs index f3f0b135b8..cd3c72c3a4 100644 --- a/src/Avalonia.Controls/ListBox.cs +++ b/src/Avalonia.Controls/ListBox.cs @@ -127,7 +127,7 @@ namespace Avalonia.Controls protected override void OnKeyDown(KeyEventArgs e) { - var hotkeys = AvaloniaLocator.Current.GetService(); + var hotkeys = PlatformHotkeyConfiguration.Instance; var ctrl = hotkeys is not null && e.KeyModifiers.HasAllFlags(hotkeys.CommandModifiers); if (!ctrl && @@ -165,7 +165,7 @@ namespace Avalonia.Controls internal bool UpdateSelectionFromPointerEvent(Control source, PointerEventArgs e) { - var hotkeys = AvaloniaLocator.Current.GetService(); + var hotkeys = PlatformHotkeyConfiguration.Instance; var toggle = hotkeys is not null && e.KeyModifiers.HasAllFlags(hotkeys.CommandModifiers); return UpdateSelectionFromEventSource( diff --git a/src/Avalonia.Controls/MaskedTextBox.cs b/src/Avalonia.Controls/MaskedTextBox.cs index 4800b7b1e4..fa4b8b2fb4 100644 --- a/src/Avalonia.Controls/MaskedTextBox.cs +++ b/src/Avalonia.Controls/MaskedTextBox.cs @@ -204,7 +204,7 @@ namespace Avalonia.Controls return; } - var keymap = AvaloniaLocator.Current.GetService(); + var keymap = PlatformHotkeyConfiguration.Instance; bool Match(List gestures) => gestures.Any(g => g.Matches(e)); diff --git a/src/Avalonia.Controls/SelectableTextBlock.cs b/src/Avalonia.Controls/SelectableTextBlock.cs index 8b32638835..973f086e2a 100644 --- a/src/Avalonia.Controls/SelectableTextBlock.cs +++ b/src/Avalonia.Controls/SelectableTextBlock.cs @@ -198,7 +198,7 @@ namespace Avalonia.Controls var handled = false; var modifiers = e.KeyModifiers; - var keymap = AvaloniaLocator.Current.GetRequiredService(); + var keymap = PlatformHotkeyConfiguration.Instance!; bool Match(List gestures) => gestures.Any(g => g.Matches(e)); diff --git a/src/Avalonia.Controls/TextBox.cs b/src/Avalonia.Controls/TextBox.cs index 7bc26bf3b0..2479622b31 100644 --- a/src/Avalonia.Controls/TextBox.cs +++ b/src/Avalonia.Controls/TextBox.cs @@ -32,20 +32,17 @@ namespace Avalonia.Controls /// /// Gets a platform-specific for the Cut action /// - public static KeyGesture? CutGesture { get; } = AvaloniaLocator.Current - .GetService()?.Cut.FirstOrDefault(); + public static KeyGesture? CutGesture { get; } = PlatformHotkeyConfiguration.Instance?.Cut.FirstOrDefault(); /// /// Gets a platform-specific for the Copy action /// - public static KeyGesture? CopyGesture { get; } = AvaloniaLocator.Current - .GetService()?.Copy.FirstOrDefault(); + public static KeyGesture? CopyGesture { get; } = PlatformHotkeyConfiguration.Instance?.Copy.FirstOrDefault(); /// /// Gets a platform-specific for the Paste action /// - public static KeyGesture? PasteGesture { get; } = AvaloniaLocator.Current - .GetService()?.Paste.FirstOrDefault(); + public static KeyGesture? PasteGesture { get; } = PlatformHotkeyConfiguration.Instance?.Paste.FirstOrDefault(); /// /// Defines the property @@ -1103,7 +1100,7 @@ namespace Avalonia.Controls var handled = false; var modifiers = e.KeyModifiers; - var keymap = AvaloniaLocator.Current.GetRequiredService(); + var keymap = PlatformHotkeyConfiguration.Instance!; bool Match(List gestures) => gestures.Any(g => g.Matches(e)); bool DetectSelection() => e.KeyModifiers.HasAllFlags(keymap.SelectionModifiers); diff --git a/src/Avalonia.Controls/TopLevel.cs b/src/Avalonia.Controls/TopLevel.cs index be9df4188d..5da82813e2 100644 --- a/src/Avalonia.Controls/TopLevel.cs +++ b/src/Avalonia.Controls/TopLevel.cs @@ -250,7 +250,7 @@ namespace Avalonia.Controls if (e is RawKeyEventArgs rawKeyEventArgs && rawKeyEventArgs.Type == RawKeyEventType.KeyDown) { - var keymap = AvaloniaLocator.Current.GetService()?.Back; + var keymap = PlatformHotkeyConfiguration.Instance?.Back; if (keymap != null) { diff --git a/src/Avalonia.Controls/TreeView.cs b/src/Avalonia.Controls/TreeView.cs index a499829d4a..d449590bd8 100644 --- a/src/Avalonia.Controls/TreeView.cs +++ b/src/Avalonia.Controls/TreeView.cs @@ -571,7 +571,7 @@ namespace Avalonia.Controls if (!e.Handled) { - var keymap = AvaloniaLocator.Current.GetService(); + var keymap = PlatformHotkeyConfiguration.Instance; bool Match(List? gestures) => gestures?.Any(g => g.Matches(e)) ?? false; if (this.SelectionMode == SelectionMode.Multiple && Match(keymap?.SelectAll)) @@ -656,7 +656,7 @@ namespace Avalonia.Controls e.Source, true, e.KeyModifiers.HasAllFlags(KeyModifiers.Shift), - e.KeyModifiers.HasAllFlags(AvaloniaLocator.Current.GetRequiredService().CommandModifiers), + e.KeyModifiers.HasAllFlags(PlatformHotkeyConfiguration.Instance!.CommandModifiers), point.Properties.IsRightButtonPressed); } } diff --git a/src/Avalonia.Native/AvaloniaNativePlatform.cs b/src/Avalonia.Native/AvaloniaNativePlatform.cs index c471cf91d2..a1ab90b3f7 100644 --- a/src/Avalonia.Native/AvaloniaNativePlatform.cs +++ b/src/Avalonia.Native/AvaloniaNativePlatform.cs @@ -113,8 +113,8 @@ namespace Avalonia.Native .Bind().ToConstant(new AvaloniaNativeDragSource(_factory)) .Bind().ToConstant(applicationPlatform) .Bind().ToConstant(new MacOSNativeMenuCommands(_factory.CreateApplicationCommands())); - - var hotkeys = AvaloniaLocator.Current.GetService(); + + var hotkeys = PlatformHotkeyConfiguration.Instance; if (hotkeys is not null) { hotkeys.MoveCursorToTheStartOfLine.Add(new KeyGesture(Key.Left, hotkeys.CommandModifiers)); diff --git a/tests/Avalonia.Controls.UnitTests/ListBoxTests_Multiple.cs b/tests/Avalonia.Controls.UnitTests/ListBoxTests_Multiple.cs index ed19d1dc97..21e25a6f1c 100644 --- a/tests/Avalonia.Controls.UnitTests/ListBoxTests_Multiple.cs +++ b/tests/Avalonia.Controls.UnitTests/ListBoxTests_Multiple.cs @@ -34,7 +34,7 @@ namespace Avalonia.Controls.UnitTests var root = new TestRoot(target); root.LayoutManager.ExecuteInitialLayoutPass(); - AvaloniaLocator.CurrentMutable.Bind().ToConstant(new Mock().Object); + AvaloniaLocator.CurrentMutable.Bind().ToConstant(new PlatformHotkeyConfiguration()); _helper.Click(target.Presenter.Panel.Children[2], modifiers: KeyModifiers.Shift); Assert.Equal(new[] { "Foo", "Bar", "Baz" }, target.SelectedItems); @@ -60,7 +60,7 @@ namespace Avalonia.Controls.UnitTests var root = new TestRoot(target); root.LayoutManager.ExecuteInitialLayoutPass(); - AvaloniaLocator.CurrentMutable.Bind().ToConstant(new Mock().Object); + AvaloniaLocator.CurrentMutable.Bind().ToConstant(new PlatformHotkeyConfiguration()); SelectionChangedEventArgs receivedArgs = null; @@ -118,7 +118,7 @@ namespace Avalonia.Controls.UnitTests var root = new TestRoot(target); root.LayoutManager.ExecuteInitialLayoutPass(); - AvaloniaLocator.CurrentMutable.Bind().ToConstant(new Mock().Object); + AvaloniaLocator.CurrentMutable.Bind().ToConstant(new PlatformHotkeyConfiguration()); _helper.Click(target.Presenter.Panel.Children[1]); _helper.Click(target.Presenter.Panel.Children[2], modifiers: KeyModifiers.Control); _helper.Click(target.Presenter.Panel.Children[3], modifiers: KeyModifiers.Control); @@ -152,7 +152,7 @@ namespace Avalonia.Controls.UnitTests var root = new TestRoot(target); root.LayoutManager.ExecuteInitialLayoutPass(); - AvaloniaLocator.CurrentMutable.Bind().ToConstant(new Mock().Object); + AvaloniaLocator.CurrentMutable.Bind().ToConstant(new PlatformHotkeyConfiguration()); _helper.Click(target.Presenter.Panel.Children[1]); _helper.Click(target.Presenter.Panel.Children[2], modifiers: KeyModifiers.Control); @@ -183,7 +183,7 @@ namespace Avalonia.Controls.UnitTests var root = new TestRoot(target); root.LayoutManager.ExecuteInitialLayoutPass(); - AvaloniaLocator.CurrentMutable.Bind().ToConstant(new Mock().Object); + AvaloniaLocator.CurrentMutable.Bind().ToConstant(new PlatformHotkeyConfiguration()); _helper.Click(target.Presenter.Panel.Children[3]); _helper.Click(target.Presenter.Panel.Children[4], modifiers: KeyModifiers.Control); @@ -211,7 +211,7 @@ namespace Avalonia.Controls.UnitTests var root = new TestRoot(target); root.LayoutManager.ExecuteInitialLayoutPass(); - AvaloniaLocator.CurrentMutable.Bind().ToConstant(new Mock().Object); + AvaloniaLocator.CurrentMutable.Bind().ToConstant(new PlatformHotkeyConfiguration()); _helper.Click(target.Presenter.Panel.Children[3]); _helper.Click(target.Presenter.Panel.Children[5], modifiers: KeyModifiers.Shift); @@ -239,7 +239,7 @@ namespace Avalonia.Controls.UnitTests var root = new TestRoot(target); root.LayoutManager.ExecuteInitialLayoutPass(); - AvaloniaLocator.CurrentMutable.Bind().ToConstant(new Mock().Object); + AvaloniaLocator.CurrentMutable.Bind().ToConstant(new PlatformHotkeyConfiguration()); _helper.Click(target.Presenter.Panel.Children[0]); _helper.Click(target.Presenter.Panel.Children[5], modifiers: KeyModifiers.Shift); @@ -266,7 +266,7 @@ namespace Avalonia.Controls.UnitTests var root = new TestRoot(target); root.LayoutManager.ExecuteInitialLayoutPass(); - AvaloniaLocator.CurrentMutable.Bind().ToConstant(new Mock().Object); + AvaloniaLocator.CurrentMutable.Bind().ToConstant(new PlatformHotkeyConfiguration()); SelectionChangedEventArgs receivedArgs = null; @@ -319,7 +319,7 @@ namespace Avalonia.Controls.UnitTests var root = new TestRoot(target); root.LayoutManager.ExecuteInitialLayoutPass(); - AvaloniaLocator.CurrentMutable.Bind().ToConstant(new Mock().Object); + AvaloniaLocator.CurrentMutable.Bind().ToConstant(new PlatformHotkeyConfiguration()); _helper.Click(target.Presenter.Panel.Children[0]); Assert.Equal(new[] { "Foo" }, target.SelectedItems); @@ -414,7 +414,7 @@ namespace Avalonia.Controls.UnitTests var root = new TestRoot(target); root.LayoutManager.ExecuteInitialLayoutPass(); - AvaloniaLocator.CurrentMutable.Bind().ToConstant(new Mock().Object); + AvaloniaLocator.CurrentMutable.Bind().ToConstant(new PlatformHotkeyConfiguration()); _helper.Click(target.Presenter.Panel.Children[0]); _helper.Click(target.Presenter.Panel.Children[1], modifiers: KeyModifiers.Shift); @@ -444,7 +444,7 @@ namespace Avalonia.Controls.UnitTests var root = new TestRoot(target); root.LayoutManager.ExecuteInitialLayoutPass(); - AvaloniaLocator.CurrentMutable.Bind().ToConstant(new Mock().Object); + AvaloniaLocator.CurrentMutable.Bind().ToConstant(new PlatformHotkeyConfiguration()); _helper.Click(target.Presenter.Panel.Children[0]); _helper.Click(target.Presenter.Panel.Children[2], MouseButton.Right, modifiers: KeyModifiers.Shift); @@ -471,7 +471,7 @@ namespace Avalonia.Controls.UnitTests var root = new TestRoot(target); root.LayoutManager.ExecuteInitialLayoutPass(); - AvaloniaLocator.CurrentMutable.Bind().ToConstant(new Mock().Object); + AvaloniaLocator.CurrentMutable.Bind().ToConstant(new PlatformHotkeyConfiguration()); _helper.Click(target.Presenter.Panel.Children[0]); _helper.Click(target.Presenter.Panel.Children[2], MouseButton.Right, modifiers: KeyModifiers.Control); diff --git a/tests/Avalonia.Controls.UnitTests/ListBoxTests_Single.cs b/tests/Avalonia.Controls.UnitTests/ListBoxTests_Single.cs index 92ea2df2a9..f442202e26 100644 --- a/tests/Avalonia.Controls.UnitTests/ListBoxTests_Single.cs +++ b/tests/Avalonia.Controls.UnitTests/ListBoxTests_Single.cs @@ -49,7 +49,7 @@ namespace Avalonia.Controls.UnitTests Template = new FuncControlTemplate(CreateListBoxTemplate), ItemsSource = new[] { "Foo", "Bar", "Baz " }, }; - AvaloniaLocator.CurrentMutable.Bind().ToConstant(new Mock().Object); + AvaloniaLocator.CurrentMutable.Bind().ToConstant(new PlatformHotkeyConfiguration()); ApplyTemplate(target); target.Presenter.Panel.Children[0].RaiseEvent(new GotFocusEventArgs @@ -79,7 +79,7 @@ namespace Avalonia.Controls.UnitTests Template = new FuncControlTemplate(CreateListBoxTemplate), ItemsSource = new[] { "Foo", "Bar", "Baz " }, }; - AvaloniaLocator.CurrentMutable.Bind().ToConstant(new Mock().Object); + AvaloniaLocator.CurrentMutable.Bind().ToConstant(new PlatformHotkeyConfiguration()); ApplyTemplate(target); _mouse.Click(target.Presenter.Panel.Children[0]); @@ -97,7 +97,7 @@ namespace Avalonia.Controls.UnitTests Template = new FuncControlTemplate(CreateListBoxTemplate), ItemsSource = new[] { "Foo", "Bar", "Baz " }, }; - AvaloniaLocator.CurrentMutable.Bind().ToConstant(new Mock().Object); + AvaloniaLocator.CurrentMutable.Bind().ToConstant(new PlatformHotkeyConfiguration()); ApplyTemplate(target); target.SelectedIndex = 0; @@ -118,7 +118,7 @@ namespace Avalonia.Controls.UnitTests ItemsSource = new[] { "Foo", "Bar", "Baz " }, SelectionMode = SelectionMode.Single | SelectionMode.Toggle, }; - AvaloniaLocator.CurrentMutable.Bind().ToConstant(new Mock().Object); + AvaloniaLocator.CurrentMutable.Bind().ToConstant(new PlatformHotkeyConfiguration()); ApplyTemplate(target); _mouse.Click(target.Presenter.Panel.Children[0]); @@ -139,7 +139,7 @@ namespace Avalonia.Controls.UnitTests SelectionMode = SelectionMode.Toggle, }; - AvaloniaLocator.CurrentMutable.Bind().ToConstant(new Mock().Object); + AvaloniaLocator.CurrentMutable.Bind().ToConstant(new PlatformHotkeyConfiguration()); ApplyTemplate(target); target.SelectedIndex = 0; @@ -160,7 +160,7 @@ namespace Avalonia.Controls.UnitTests ItemsSource = new[] { "Foo", "Bar", "Baz " }, SelectionMode = SelectionMode.Toggle | SelectionMode.AlwaysSelected, }; - AvaloniaLocator.CurrentMutable.Bind().ToConstant(new Mock().Object); + AvaloniaLocator.CurrentMutable.Bind().ToConstant(new PlatformHotkeyConfiguration()); ApplyTemplate(target); target.SelectedIndex = 0; @@ -181,7 +181,7 @@ namespace Avalonia.Controls.UnitTests ItemsSource = new[] { "Foo", "Bar", "Baz " }, SelectionMode = SelectionMode.Single | SelectionMode.Toggle, }; - AvaloniaLocator.CurrentMutable.Bind().ToConstant(new Mock().Object); + AvaloniaLocator.CurrentMutable.Bind().ToConstant(new PlatformHotkeyConfiguration()); ApplyTemplate(target); target.SelectedIndex = 1; diff --git a/tests/Avalonia.Controls.UnitTests/Primitives/SelectingItemsControlTests.cs b/tests/Avalonia.Controls.UnitTests/Primitives/SelectingItemsControlTests.cs index e456f25238..c41f3c18cb 100644 --- a/tests/Avalonia.Controls.UnitTests/Primitives/SelectingItemsControlTests.cs +++ b/tests/Avalonia.Controls.UnitTests/Primitives/SelectingItemsControlTests.cs @@ -1234,7 +1234,7 @@ namespace Avalonia.Controls.UnitTests.Primitives Template = Template(), ItemsSource = new[] { "Foo", "Bar", "Baz " }, }; - AvaloniaLocator.CurrentMutable.Bind().ToConstant(new Mock().Object); + AvaloniaLocator.CurrentMutable.Bind().ToConstant(new PlatformHotkeyConfiguration()); Prepare(target); var container = target.ContainerFromIndex(1)!; @@ -1258,7 +1258,7 @@ namespace Avalonia.Controls.UnitTests.Primitives Template = Template(), ItemsSource = items, }; - AvaloniaLocator.CurrentMutable.Bind().ToConstant(new Mock().Object); + AvaloniaLocator.CurrentMutable.Bind().ToConstant(new PlatformHotkeyConfiguration()); Prepare(target); _helper.Down(target.Presenter.Panel.Children[1]); @@ -1355,7 +1355,7 @@ namespace Avalonia.Controls.UnitTests.Primitives Template = Template(), ItemsSource = new[] { "Foo", "Bar", "Baz", "Foo", "Bar", "Baz" }, }; - AvaloniaLocator.CurrentMutable.Bind().ToConstant(new Mock().Object); + AvaloniaLocator.CurrentMutable.Bind().ToConstant(new PlatformHotkeyConfiguration()); Prepare(target); _helper.Down((Interactive)target.Presenter.Panel.Children[3]); @@ -1373,7 +1373,7 @@ namespace Avalonia.Controls.UnitTests.Primitives Template = Template(), ItemsSource = new[] { "Foo", "Bar", "Baz", "Foo", "Bar", "Baz" }, }; - AvaloniaLocator.CurrentMutable.Bind().ToConstant(new Mock().Object); + AvaloniaLocator.CurrentMutable.Bind().ToConstant(new PlatformHotkeyConfiguration()); Prepare(target); _helper.Down((Interactive)target.Presenter.Panel.Children[3]); diff --git a/tests/Avalonia.Controls.UnitTests/TreeViewTests.cs b/tests/Avalonia.Controls.UnitTests/TreeViewTests.cs index f4306f63db..f5e7992203 100644 --- a/tests/Avalonia.Controls.UnitTests/TreeViewTests.cs +++ b/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 = AvaloniaLocator.Current.GetRequiredService(); + var keymap = PlatformHotkeyConfiguration.Instance!; 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 = AvaloniaLocator.Current.GetRequiredService(); + var keymap = PlatformHotkeyConfiguration.Instance!; 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 = AvaloniaLocator.Current.GetRequiredService(); + var keymap = PlatformHotkeyConfiguration.Instance!; var selectAllGesture = keymap.SelectAll.First(); var keyEvent = new KeyEventArgs