Browse Source

Fix macOS ActivatableLifetime events (#17608)

Julien Lebosquain 10 months ago
parent
commit
c851c7a310

+ 10 - 0
native/Avalonia.Native/src/OSX/app.mm

@@ -59,6 +59,16 @@ ComPtr<IAvnApplicationEvents> _events;
     _events->OnUnhide();
 }
 
+- (void) applicationDidBecomeActive:(NSNotification *) notification
+{
+    _events->OnActivate();
+}
+
+- (void) applicationDidResignActive:(NSNotification *) notification
+{
+    _events->OnDeactivate();
+}
+
 - (void)application:(NSApplication *)sender openFiles:(NSArray<NSString *> *)filenames
 {
     auto array = CreateAvnStringArray(filenames);

+ 11 - 3
src/Avalonia.Native/AvaloniaNativeApplicationPlatform.cs

@@ -87,18 +87,26 @@ namespace Avalonia.Native
         }
 
         void IAvnApplicationEvents.OnHide()
+        {
+        }
+
+        void IAvnApplicationEvents.OnUnhide()
+        {
+        }
+
+        void IAvnApplicationEvents.OnActivate()
         {
             if (AvaloniaLocator.Current.GetService<IActivatableLifetime>() is ActivatableLifetimeBase lifetime)
             {
-                lifetime.OnDeactivated(ActivationKind.Background);    
+                lifetime.OnActivated(ActivationKind.Background);
             }
         }
 
-        void IAvnApplicationEvents.OnUnhide()
+        void IAvnApplicationEvents.OnDeactivate()
         {
             if (AvaloniaLocator.Current.GetService<IActivatableLifetime>() is ActivatableLifetimeBase lifetime)
             {
-                lifetime.OnActivated(ActivationKind.Background);    
+                lifetime.OnDeactivated(ActivationKind.Background);
             }
         }
 

+ 2 - 0
src/Avalonia.Native/avn.idl

@@ -1142,6 +1142,8 @@ interface IAvnApplicationEvents : IUnknown
      void OnReopen ();
      void OnHide ();
      void OnUnhide ();
+     void OnActivate();
+     void OnDeactivate();
 }
 
 [uuid(b4284791-055b-4313-8c2e-50f0a8c72ce9)]