Browse Source

[win32 window] fix BorderThickness

pull/2128/head
Dan Walmsley 8 years ago
parent
commit
f0f7cf4427
  1. 32
      src/Windows/Avalonia.Win32/WindowImpl.cs

32
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);

Loading…
Cancel
Save