From c851c7a310779fe37a97272c88cfcf7db5dfa0d9 Mon Sep 17 00:00:00 2001 From: Julien Lebosquain Date: Tue, 26 Nov 2024 03:24:42 +0100 Subject: [PATCH] Fix macOS ActivatableLifetime events (#17608) --- native/Avalonia.Native/src/OSX/app.mm | 10 ++++++++++ .../AvaloniaNativeApplicationPlatform.cs | 14 +++++++++++--- src/Avalonia.Native/avn.idl | 2 ++ 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/native/Avalonia.Native/src/OSX/app.mm b/native/Avalonia.Native/src/OSX/app.mm index d3d3d938e9..dfa4062f0a 100644 --- a/native/Avalonia.Native/src/OSX/app.mm +++ b/native/Avalonia.Native/src/OSX/app.mm @@ -59,6 +59,16 @@ ComPtr _events; _events->OnUnhide(); } +- (void) applicationDidBecomeActive:(NSNotification *) notification +{ + _events->OnActivate(); +} + +- (void) applicationDidResignActive:(NSNotification *) notification +{ + _events->OnDeactivate(); +} + - (void)application:(NSApplication *)sender openFiles:(NSArray *)filenames { auto array = CreateAvnStringArray(filenames); diff --git a/src/Avalonia.Native/AvaloniaNativeApplicationPlatform.cs b/src/Avalonia.Native/AvaloniaNativeApplicationPlatform.cs index 95d459499c..ea64f0d93b 100644 --- a/src/Avalonia.Native/AvaloniaNativeApplicationPlatform.cs +++ b/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() is ActivatableLifetimeBase lifetime) { - lifetime.OnDeactivated(ActivationKind.Background); + lifetime.OnActivated(ActivationKind.Background); } } - void IAvnApplicationEvents.OnUnhide() + void IAvnApplicationEvents.OnDeactivate() { if (AvaloniaLocator.Current.GetService() is ActivatableLifetimeBase lifetime) { - lifetime.OnActivated(ActivationKind.Background); + lifetime.OnDeactivated(ActivationKind.Background); } } diff --git a/src/Avalonia.Native/avn.idl b/src/Avalonia.Native/avn.idl index dfbd8c2516..91c8c9c23c 100644 --- a/src/Avalonia.Native/avn.idl +++ b/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)]