Browse Source

Merge pull request #4404 from Deadpikle/fix/4395

Fix native menus not being setup properly
repro/carousel-not-materializing-content
danwalmsley 6 years ago
committed by GitHub
parent
commit
1eb77f3b36
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 11
      src/Avalonia.Native/AvaloniaNativeMenuExporter.cs

11
src/Avalonia.Native/AvaloniaNativeMenuExporter.cs

@ -11,7 +11,7 @@ namespace Avalonia.Native
class AvaloniaNativeMenuExporter : ITopLevelNativeMenuExporter class AvaloniaNativeMenuExporter : ITopLevelNativeMenuExporter
{ {
private IAvaloniaNativeFactory _factory; private IAvaloniaNativeFactory _factory;
private bool _resetQueued; private bool _resetQueued = true;
private bool _exported = false; private bool _exported = false;
private IAvnWindow _nativeWindow; private IAvnWindow _nativeWindow;
private NativeMenu _menu; private NativeMenu _menu;
@ -39,8 +39,7 @@ namespace Avalonia.Native
public void SetNativeMenu(NativeMenu menu) public void SetNativeMenu(NativeMenu menu)
{ {
_menu = menu == null ? new NativeMenu() : menu; _menu = menu == null ? new NativeMenu() : menu;
DoLayoutReset(true);
DoLayoutReset();
} }
internal void UpdateIfNeeded() internal void UpdateIfNeeded()
@ -74,9 +73,9 @@ namespace Avalonia.Native
return result; return result;
} }
private void DoLayoutReset() private void DoLayoutReset(bool forceUpdate = false)
{ {
if (_resetQueued) if (_resetQueued || forceUpdate)
{ {
_resetQueued = false; _resetQueued = false;
@ -109,7 +108,7 @@ namespace Avalonia.Native
if (_resetQueued) if (_resetQueued)
return; return;
_resetQueued = true; _resetQueued = true;
Dispatcher.UIThread.Post(DoLayoutReset, DispatcherPriority.Background); Dispatcher.UIThread.Post(() => DoLayoutReset(), DispatcherPriority.Background);
} }
private void SetMenu(NativeMenu menu) private void SetMenu(NativeMenu menu)

Loading…
Cancel
Save