Selaa lähdekoodia

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

Dan Walmsley 5 vuotta sitten
vanhempi
sitoutus
53e14acb9d
1 muutettua tiedostoa jossa 12 lisäystä ja 2 poistoa
  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;
             menuItem.Menu = menu;
 
 
+            var setMenu = _nativeMenu.ManagedMenu != appMenuHolder;
+
             _disposable?.Dispose();
             _disposable?.Dispose();
             _disposable = _nativeMenu.Update(this, _factory, appMenuHolder);
             _disposable = _nativeMenu.Update(this, _factory, appMenuHolder);
 
 
-            _factory.SetAppMenu(_nativeMenu);
+            if (setMenu)
+            {
+                _factory.SetAppMenu(_nativeMenu);
+            }
         }
         }
 
 
         private void SetMenu(IAvnWindow avnWindow, NativeMenu menu)
         private void SetMenu(IAvnWindow avnWindow, NativeMenu menu)
@@ -148,10 +153,15 @@ namespace Avalonia.Native
                 }
                 }
             }
             }
 
 
+            var setMenu = _nativeMenu.ManagedMenu != menu;
+
             _disposable?.Dispose();
             _disposable?.Dispose();
             _disposable = _nativeMenu.Update(this, _factory, menu);
             _disposable = _nativeMenu.Update(this, _factory, menu);
 
 
-            avnWindow.SetMainMenu(_nativeMenu);
+            if (setMenu)
+            {
+                avnWindow.SetMainMenu(_nativeMenu);
+            }
         }
         }
     }
     }
 }
 }