Browse Source

Use MenuItems bridge interface to raise clicks.

pull/3762/head
Dan Walmsley 6 years ago
parent
commit
964079df4c
  1. 0
      src/Avalonia.Controls/INativeMenuItemExporterEventsImplBridge.cs
  2. 2
      src/Avalonia.Controls/NativeMenuBar.cs
  3. 4
      src/Avalonia.Controls/NativeMenuItem.cs
  4. 4
      src/Avalonia.FreeDesktop/DBusMenuExporter.cs
  5. 2
      src/Avalonia.Native/IAvnMenuItem.cs

0
src/Avalonia.Controls/INativeMenuItemExporterEventsImplBridge.cs

2
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();
}
}
}

4
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());

4
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();
}
}
}

2
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(() =>
{

Loading…
Cancel
Save