Browse Source

maintain the client size when switching between extended and non extended client areas.

Previously the client area would grow to fill the window.
pull/5736/head
Dan Walmsley 6 years ago
parent
commit
79665bfc74
  1. 17
      src/Windows/Avalonia.Win32/WindowImpl.cs

17
src/Windows/Avalonia.Win32/WindowImpl.cs

@ -883,20 +883,19 @@ namespace Avalonia.Win32
_isClientAreaExtended = false;
return;
}
GetWindowRect(_hwnd, out var rcClient);
GetClientRect(_hwnd, out var rcClient);
GetWindowRect(_hwnd, out var rcWindow);
// Inform the application of the frame change.
SetWindowPos(_hwnd,
IntPtr.Zero,
rcClient.left, rcClient.top,
rcClient.Width, rcClient.Height,
SetWindowPosFlags.SWP_FRAMECHANGED);
IntPtr.Zero,
rcWindow.left, rcWindow.top,
rcClient.Width, rcClient.Height,
SetWindowPosFlags.SWP_FRAMECHANGED);
if (_isClientAreaExtended && WindowState != WindowState.FullScreen)
{
var margins = UpdateExtendMargins();
DwmExtendFrameIntoClientArea(_hwnd, ref margins);
}
else
@ -906,6 +905,8 @@ namespace Avalonia.Win32
_offScreenMargin = new Thickness();
_extendedMargins = new Thickness();
Resize(new Size(rcWindow.Width, rcWindow.Height));
}
if(!_isClientAreaExtended || (_extendChromeHints.HasFlagCustom(ExtendClientAreaChromeHints.SystemChrome) &&

Loading…
Cancel
Save