diff --git a/src/OSX/Avalonia.MonoMac/MonoMacPlatform.cs b/src/OSX/Avalonia.MonoMac/MonoMacPlatform.cs index 2c9710c05a..0deea7fb44 100644 --- a/src/OSX/Avalonia.MonoMac/MonoMacPlatform.cs +++ b/src/OSX/Avalonia.MonoMac/MonoMacPlatform.cs @@ -14,6 +14,9 @@ namespace Avalonia.MonoMac internal readonly MouseDevice MouseDevice = new MouseDevice(); readonly KeyboardDevice _keyboardDevice = new KeyboardDevice(); internal static NSApplication App; + private static bool s_monoMacInitialized; + private static bool s_showInDock = true; + void DoInitialize() { AvaloniaLocator.CurrentMutable @@ -26,7 +29,7 @@ namespace Avalonia.MonoMac .Bind().ToSingleton() .Bind().ToConstant(PlatformThreadingInterface.Instance); - InitializeCocoaApp(); + InitializeMonoMac(); } public static void Initialize() @@ -36,12 +39,29 @@ namespace Avalonia.MonoMac } - void InitializeCocoaApp() + void InitializeMonoMac() { + if(s_monoMacInitialized) + return; NSApplication.Init(); App = NSApplication.SharedApplication; - App.ActivationPolicy = NSApplicationActivationPolicy.Regular; + UpdateActivationPolicy(); + s_monoMacInitialized = true; + } + static void UpdateActivationPolicy() => App.ActivationPolicy = ShowInDock + ? NSApplicationActivationPolicy.Regular + : NSApplicationActivationPolicy.Accessory; + + public static bool ShowInDock + { + get => s_showInDock; + set + { + s_showInDock = value; + if (s_monoMacInitialized) + UpdateActivationPolicy(); + } }