Browse Source

Fixed native menu attaching for macos and tests

Krzysztof Krysiński 2 months ago
parent
commit
6bcacb1088

+ 1 - 0
src/PixiEditor/ViewModels/Menu/MenuBarViewModel.cs

@@ -97,6 +97,7 @@ internal class MenuBarViewModel : PixiObservableObject
     private void RebuildMenu()
     {
         MenuEntries?.Clear();
+        NativeMenu?.Items?.Clear();
         nativeMenuItems?.Clear();
         menuItems.Clear();
 

+ 21 - 1
src/PixiEditor/Views/Main/MainTitleBar.axaml.cs

@@ -42,7 +42,27 @@ public partial class MainTitleBar : UserControl
         base.OnAttachedToVisualTree(e);
         if (IOperatingSystem.Current.IsMacOs && DataContext is MenuBarViewModel menuBarViewModel)
         {
-            NativeMenu.SetMenu(MainWindow.Current, menuBarViewModel.NativeMenu);
+            if (menuBarViewModel.NativeMenu != null)
+            {
+                NativeMenu.SetMenu(MainWindow.Current, menuBarViewModel.NativeMenu);
+            }
+            else
+            {
+                menuBarViewModel.PropertyChanged += (sender, args) =>
+                {
+                    if (args.PropertyName == nameof(MenuBarViewModel.NativeMenu))
+                    {
+                        if (menuBarViewModel.NativeMenu != null)
+                        {
+                            NativeMenu.SetMenu(MainWindow.Current, menuBarViewModel.NativeMenu);
+                        }
+                        else
+                        {
+                            NativeMenu.SetMenu(MainWindow.Current, null);
+                        }
+                    }
+                };
+            }
         }
     }
 }

+ 1 - 1
tests/PixiEditor.Tests/PixiEditorTest.cs

@@ -55,7 +55,7 @@ public class FullPixiEditorTest : PixiEditorTest
 {
     public FullPixiEditorTest()
     {
-        ExtensionLoader loader = new ExtensionLoader("TestExtensions", "TestExtensions/Unpacked");
+        ExtensionLoader loader = new ExtensionLoader(["TestExtensions"], "TestExtensions/Unpacked");
 
         if (IOperatingSystem.Current == null)
         {