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 get
{ {
var style = UnmanagedMethods.GetWindowLong(_hwnd, (int)UnmanagedMethods.WindowLongParam.GWL_STYLE); if (_decorated)
var exStyle = UnmanagedMethods.GetWindowLong(_hwnd, (int)UnmanagedMethods.WindowLongParam.GWL_EXSTYLE); {
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)) if (UnmanagedMethods.AdjustWindowRectEx(ref padding, style, false, exStyle))
{ {
return new Thickness(-padding.left, -padding.top, padding.right, padding.bottom); return new Thickness(-padding.left, -padding.top, padding.right, padding.bottom);
}
else
{
throw new Win32Exception();
}
} }
else else
{ {
throw new Win32Exception(); return new Thickness();
} }
} }
} }
@ -149,12 +156,7 @@ namespace Avalonia.Win32
if (value != ClientSize) if (value != ClientSize)
{ {
value *= Scaling; value *= Scaling;
if (_decorated)
{
value += BorderThickness;
}
UnmanagedMethods.SetWindowPos( UnmanagedMethods.SetWindowPos(
_hwnd, _hwnd,
IntPtr.Zero, IntPtr.Zero,
@ -888,6 +890,8 @@ namespace Avalonia.Win32
{ {
var decorated = _decorated; var decorated = _decorated;
var oldThickness = BorderThickness;
change(); change();
var style = (WindowStyles)GetWindowLong(_hwnd, (int)WindowLongParam.GWL_STYLE); var style = (WindowStyles)GetWindowLong(_hwnd, (int)WindowLongParam.GWL_STYLE);
@ -908,8 +912,6 @@ namespace Avalonia.Win32
style ^= (WindowStyles.WS_SIZEFRAME); style ^= (WindowStyles.WS_SIZEFRAME);
} }
var oldThickness = BorderThickness;
SetWindowLong(_hwnd, (int)WindowLongParam.GWL_STYLE, (uint)style); SetWindowLong(_hwnd, (int)WindowLongParam.GWL_STYLE, (uint)style);
UnmanagedMethods.GetWindowRect(_hwnd, out var windowRect); UnmanagedMethods.GetWindowRect(_hwnd, out var windowRect);

Loading…
Cancel
Save