diff --git a/Windows/Perspex.Win32/Interop/UnmanagedMethods.cs b/Windows/Perspex.Win32/Interop/UnmanagedMethods.cs index f4262d867d..e51753fac0 100644 --- a/Windows/Perspex.Win32/Interop/UnmanagedMethods.cs +++ b/Windows/Perspex.Win32/Interop/UnmanagedMethods.cs @@ -190,6 +190,13 @@ namespace Perspex.Win32.Interop SM_SYSTEMDOCKED = 0x2004, } + public enum WindowActivate + { + WA_INACTIVE, + WA_ACTIVE, + WA_CLICKACTIVE, + } + [Flags] public enum WindowStyles : uint { diff --git a/Windows/Perspex.Win32/WindowImpl.cs b/Windows/Perspex.Win32/WindowImpl.cs index 4d7dd8588a..01b0d31e29 100644 --- a/Windows/Perspex.Win32/WindowImpl.cs +++ b/Windows/Perspex.Win32/WindowImpl.cs @@ -163,17 +163,20 @@ namespace Perspex.Win32 switch ((UnmanagedMethods.WindowsMessage)msg) { case UnmanagedMethods.WindowsMessage.WM_ACTIVATE: - switch ((int)lParam & 0xffff) + var wa = (UnmanagedMethods.WindowActivate)((int)wParam & 0xffff); + + switch (wa) { - case 1: - case 2: + case UnmanagedMethods.WindowActivate.WA_ACTIVE: + case UnmanagedMethods.WindowActivate.WA_CLICKACTIVE: if (this.Activated != null) { this.Activated(); } break; - case 0: + + case UnmanagedMethods.WindowActivate.WA_INACTIVE: if (this.Deactivated != null) { this.Deactivated();