From dbff7676074595939435a87dd54d512985bdf5e3 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Fri, 24 Jul 2020 15:57:48 -0300 Subject: [PATCH] prevent extra menu updates that are not required. --- .../AvaloniaNativeMenuExporter.cs | 37 ++++++++++--------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/src/Avalonia.Native/AvaloniaNativeMenuExporter.cs b/src/Avalonia.Native/AvaloniaNativeMenuExporter.cs index 0f2551ffeb..41ad988c34 100644 --- a/src/Avalonia.Native/AvaloniaNativeMenuExporter.cs +++ b/src/Avalonia.Native/AvaloniaNativeMenuExporter.cs @@ -74,31 +74,34 @@ namespace Avalonia.Native return result; } - void DoLayoutReset() + private void DoLayoutReset() { - _resetQueued = false; - - if (_nativeWindow is null) + if (_resetQueued) { - var appMenu = NativeMenu.GetMenu(Application.Current); + _resetQueued = false; - if (appMenu == null) + if (_nativeWindow is null) { - appMenu = CreateDefaultAppMenu(); - NativeMenu.SetMenu(Application.Current, appMenu); - } + var appMenu = NativeMenu.GetMenu(Application.Current); - SetMenu(appMenu); - } - else - { - if (_menu != null) + if (appMenu == null) + { + appMenu = CreateDefaultAppMenu(); + NativeMenu.SetMenu(Application.Current, appMenu); + } + + SetMenu(appMenu); + } + else { - SetMenu(_nativeWindow, _menu); + if (_menu != null) + { + SetMenu(_nativeWindow, _menu); + } } - } - _exported = true; + _exported = true; + } } internal void QueueReset()