From 964079df4c6c75f92300b2f3bc74b879255aaedb Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Mon, 27 Apr 2020 11:59:24 -0300 Subject: [PATCH] Use MenuItems bridge interface to raise clicks. --- .../INativeMenuItemExporterEventsImplBridge.cs | 0 src/Avalonia.Controls/NativeMenuBar.cs | 2 +- src/Avalonia.Controls/NativeMenuItem.cs | 4 ++-- src/Avalonia.FreeDesktop/DBusMenuExporter.cs | 4 ++-- src/Avalonia.Native/IAvnMenuItem.cs | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) create mode 100644 src/Avalonia.Controls/INativeMenuItemExporterEventsImplBridge.cs diff --git a/src/Avalonia.Controls/INativeMenuItemExporterEventsImplBridge.cs b/src/Avalonia.Controls/INativeMenuItemExporterEventsImplBridge.cs new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/Avalonia.Controls/NativeMenuBar.cs b/src/Avalonia.Controls/NativeMenuBar.cs index 9b96ab9c8c..63bb39108f 100644 --- a/src/Avalonia.Controls/NativeMenuBar.cs +++ b/src/Avalonia.Controls/NativeMenuBar.cs @@ -30,7 +30,7 @@ namespace Avalonia.Controls private static void OnMenuItemClick(object sender, RoutedEventArgs e) { - (((MenuItem)sender).DataContext as NativeMenuItem)?.RaiseClick(); + (((MenuItem)sender).DataContext as INativeMenuItemExporterEventsImplBridge)?.RaiseClicked(); } } } diff --git a/src/Avalonia.Controls/NativeMenuItem.cs b/src/Avalonia.Controls/NativeMenuItem.cs index 2f2eca539b..6bcf676ddb 100644 --- a/src/Avalonia.Controls/NativeMenuItem.cs +++ b/src/Avalonia.Controls/NativeMenuItem.cs @@ -5,7 +5,7 @@ using Avalonia.Utilities; namespace Avalonia.Controls { - public class NativeMenuItem : NativeMenuItemBase + public class NativeMenuItem : NativeMenuItemBase, INativeMenuItemExporterEventsImplBridge { private string _header; private KeyGesture _gesture; @@ -159,7 +159,7 @@ namespace Avalonia.Controls public event EventHandler Clicked; - public void RaiseClick() + void INativeMenuItemExporterEventsImplBridge.RaiseClicked() { Clicked?.Invoke(this, new EventArgs()); diff --git a/src/Avalonia.FreeDesktop/DBusMenuExporter.cs b/src/Avalonia.FreeDesktop/DBusMenuExporter.cs index 06bbc97dac..cd56342059 100644 --- a/src/Avalonia.FreeDesktop/DBusMenuExporter.cs +++ b/src/Avalonia.FreeDesktop/DBusMenuExporter.cs @@ -319,10 +319,10 @@ namespace Avalonia.FreeDesktop { var item = GetMenu(id).item; - if (item is NativeMenuItem menuItem) + if (item is NativeMenuItem menuItem && item is INativeMenuItemExporterEventsImplBridge bridge) { if (menuItem?.IsEnabled == true) - menuItem.RaiseClick(); + bridge?.RaiseClicked(); } } } diff --git a/src/Avalonia.Native/IAvnMenuItem.cs b/src/Avalonia.Native/IAvnMenuItem.cs index a41e461e37..a9730920f1 100644 --- a/src/Avalonia.Native/IAvnMenuItem.cs +++ b/src/Avalonia.Native/IAvnMenuItem.cs @@ -50,7 +50,7 @@ namespace Avalonia.Native.Interop return false; }); - var callback = new MenuActionCallback(() => { item.RaiseClick(); }); + var callback = new MenuActionCallback(() => { (item as INativeMenuItemExporterEventsImplBridge)?.RaiseClicked(); }); _currentActionDisposable = Disposable.Create(() => {