Browse Source

Added MonoMacPlatform.ShowInDock

Nikita Tsukanov 8 years ago
parent
commit
4e9654165f
1 changed files with 23 additions and 3 deletions
  1. 23 3
      src/OSX/Avalonia.MonoMac/MonoMacPlatform.cs

+ 23 - 3
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<ISystemDialogImpl>().ToSingleton<SystemDialogsImpl>()
                 .Bind<IPlatformThreadingInterface>().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();
+            }
         }