diff --git a/src/Windows/Avalonia.Win32/WindowImpl.cs b/src/Windows/Avalonia.Win32/WindowImpl.cs index c2ef66ce13..d516624224 100644 --- a/src/Windows/Avalonia.Win32/WindowImpl.cs +++ b/src/Windows/Avalonia.Win32/WindowImpl.cs @@ -679,7 +679,7 @@ namespace Avalonia.Win32 { UnmanagedMethods.ShowWindowCommand command; - bool doShow = true; + Action afterShow = null; switch (state) { @@ -706,8 +706,10 @@ namespace Avalonia.Win32 var cx = Math.Abs(monitorInfo.rcWork.right - x); var cy = Math.Abs(monitorInfo.rcWork.bottom - y); - doShow = false; - UnmanagedMethods.SetWindowPos(_hwnd, new IntPtr(-2), x, y, cx, cy, SetWindowPosFlags.SWP_SHOWWINDOW); + afterShow = () => + { + UnmanagedMethods.SetWindowPos(_hwnd, new IntPtr(-2), x, y, cx, cy, SetWindowPosFlags.SWP_SHOWWINDOW); + }; } } } @@ -716,13 +718,16 @@ namespace Avalonia.Win32 case WindowState.Normal: command = UnmanagedMethods.ShowWindowCommand.Restore; break; + default: throw new ArgumentException("Invalid WindowState."); } - if (doShow) + UnmanagedMethods.ShowWindow(_hwnd, command); + + if (afterShow != null) { - UnmanagedMethods.ShowWindow(_hwnd, command); + afterShow(); } UnmanagedMethods.SetFocus(_hwnd);