mirror of
https://github.com/libretro/MesenCE.git
synced 2026-11-10 11:11:32 -10:00
* Code: Add auto-formatting rules for C++ projects (clang-format) and enforce code style via "clang-format" and "dotnet format" * fix ui format warnings
59 lines
1.4 KiB
C#
59 lines
1.4 KiB
C#
using Avalonia;
|
|
using Avalonia.Controls;
|
|
using Avalonia.Interactivity;
|
|
using Avalonia.Styling;
|
|
using Mesen.Debugger.Utilities;
|
|
using System;
|
|
using System.Collections;
|
|
using System.Linq;
|
|
|
|
namespace Mesen.Controls
|
|
{
|
|
public class MesenMenu : Menu
|
|
{
|
|
protected override Type StyleKeyOverride => typeof(Menu);
|
|
|
|
private void SubmenuOpened(object? sender, RoutedEventArgs e)
|
|
{
|
|
MenuItem menuItem = (MenuItem)sender!;
|
|
IEnumerable? source = menuItem.ItemsSource ?? menuItem.Items;
|
|
if(source != null) {
|
|
foreach(object subItemAction in source) {
|
|
if(menuItem.ContainerFromItem(subItemAction) is MenuItem subMenuItem) {
|
|
subMenuItem.SubmenuOpened -= SubmenuOpened;
|
|
subMenuItem.SubmenuOpened += SubmenuOpened;
|
|
}
|
|
|
|
if(subItemAction is BaseMenuAction action) {
|
|
action.Update();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
protected override void OnAttachedToVisualTree(VisualTreeAttachmentEventArgs e)
|
|
{
|
|
base.OnAttachedToVisualTree(e);
|
|
if(Items != null) {
|
|
foreach(object item in ItemsSource ?? Items) {
|
|
if(item is MenuItem menuItem) {
|
|
menuItem.SubmenuOpened += SubmenuOpened;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
protected override void OnDetachedFromVisualTree(VisualTreeAttachmentEventArgs e)
|
|
{
|
|
base.OnDetachedFromVisualTree(e);
|
|
if(Items != null) {
|
|
foreach(object item in ItemsSource ?? Items) {
|
|
if(item is MenuItem menuItem) {
|
|
menuItem.SubmenuOpened -= SubmenuOpened;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|