Files
SourMesen e391fd8f9a Code: Add auto-formatting rules for C++ (clang-format) and enforce in CI via "clang-format" and "dotnet format" (#78)
* Code: Add auto-formatting rules for C++ projects (clang-format) and enforce code style via "clang-format" and "dotnet format"

* fix ui format warnings
2026-04-30 06:03:55 -07:00

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;
}
}
}
}
}
}