Jelajahi Sumber

only call SetMenu once or if the menu has actually changed.

Dan Walmsley 5 tahun lalu
induk
melakukan
53e14acb9d
1 mengubah file dengan 12 tambahan dan 2 penghapusan
  1. 12 2
      src/Avalonia.Native/AvaloniaNativeMenuExporter.cs

+ 12 - 2
src/Avalonia.Native/AvaloniaNativeMenuExporter.cs

@@ -130,10 +130,15 @@ namespace Avalonia.Native
 
             menuItem.Menu = menu;
 
+            var setMenu = _nativeMenu.ManagedMenu != appMenuHolder;
+
             _disposable?.Dispose();
             _disposable = _nativeMenu.Update(this, _factory, appMenuHolder);
 
-            _factory.SetAppMenu(_nativeMenu);
+            if (setMenu)
+            {
+                _factory.SetAppMenu(_nativeMenu);
+            }
         }
 
         private void SetMenu(IAvnWindow avnWindow, NativeMenu menu)
@@ -148,10 +153,15 @@ namespace Avalonia.Native
                 }
             }
 
+            var setMenu = _nativeMenu.ManagedMenu != menu;
+
             _disposable?.Dispose();
             _disposable = _nativeMenu.Update(this, _factory, menu);
 
-            avnWindow.SetMainMenu(_nativeMenu);
+            if (setMenu)
+            {
+                avnWindow.SetMainMenu(_nativeMenu);
+            }
         }
     }
 }