From 1efbb9823b63dff49d94f15d60edadea079827c4 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Sun, 13 Nov 2016 22:58:45 +0000 Subject: [PATCH] Fix Win32 WindowImplement to allow it to restore window size when SystemDecorations=false and IgnoreTaskBarWhenMaximized=false --- src/Windows/Avalonia.Win32/WindowImpl.cs | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) 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);