From f0f7cf44272866ea7adf5962f7bd8caa527d8dcf Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Sat, 1 Dec 2018 15:53:50 +0000 Subject: [PATCH] [win32 window] fix BorderThickness --- src/Windows/Avalonia.Win32/WindowImpl.cs | 32 +++++++++++++----------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/src/Windows/Avalonia.Win32/WindowImpl.cs b/src/Windows/Avalonia.Win32/WindowImpl.cs index 5b5aeb88ab..3eeccb368c 100644 --- a/src/Windows/Avalonia.Win32/WindowImpl.cs +++ b/src/Windows/Avalonia.Win32/WindowImpl.cs @@ -95,18 +95,25 @@ namespace Avalonia.Win32 { get { - var style = UnmanagedMethods.GetWindowLong(_hwnd, (int)UnmanagedMethods.WindowLongParam.GWL_STYLE); - var exStyle = UnmanagedMethods.GetWindowLong(_hwnd, (int)UnmanagedMethods.WindowLongParam.GWL_EXSTYLE); + if (_decorated) + { + var style = UnmanagedMethods.GetWindowLong(_hwnd, (int)UnmanagedMethods.WindowLongParam.GWL_STYLE); + var exStyle = UnmanagedMethods.GetWindowLong(_hwnd, (int)UnmanagedMethods.WindowLongParam.GWL_EXSTYLE); - var padding = new RECT(); + var padding = new RECT(); - if (UnmanagedMethods.AdjustWindowRectEx(ref padding, style, false, exStyle)) - { - return new Thickness(-padding.left, -padding.top, padding.right, padding.bottom); + if (UnmanagedMethods.AdjustWindowRectEx(ref padding, style, false, exStyle)) + { + return new Thickness(-padding.left, -padding.top, padding.right, padding.bottom); + } + else + { + throw new Win32Exception(); + } } else { - throw new Win32Exception(); + return new Thickness(); } } } @@ -149,12 +156,7 @@ namespace Avalonia.Win32 if (value != ClientSize) { value *= Scaling; - - if (_decorated) - { - value += BorderThickness; - } - + UnmanagedMethods.SetWindowPos( _hwnd, IntPtr.Zero, @@ -888,6 +890,8 @@ namespace Avalonia.Win32 { var decorated = _decorated; + var oldThickness = BorderThickness; + change(); var style = (WindowStyles)GetWindowLong(_hwnd, (int)WindowLongParam.GWL_STYLE); @@ -908,8 +912,6 @@ namespace Avalonia.Win32 style ^= (WindowStyles.WS_SIZEFRAME); } - var oldThickness = BorderThickness; - SetWindowLong(_hwnd, (int)WindowLongParam.GWL_STYLE, (uint)style); UnmanagedMethods.GetWindowRect(_hwnd, out var windowRect);