Browse Source

CanResize does not work on Windows (#14782)

pull/14826/head
Lubomir Tetak 2 years ago
committed by GitHub
parent
commit
d51c0471fe
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 3
      src/Windows/Avalonia.Win32/Interop/UnmanagedMethods.cs
  2. 8
      src/Windows/Avalonia.Win32/WindowImpl.cs

3
src/Windows/Avalonia.Win32/Interop/UnmanagedMethods.cs

@ -496,10 +496,9 @@ namespace Avalonia.Win32.Interop
WS_MINIMIZE = 0x20000000, WS_MINIMIZE = 0x20000000,
WS_MINIMIZEBOX = 0x20000, WS_MINIMIZEBOX = 0x20000,
WS_OVERLAPPED = 0x0, WS_OVERLAPPED = 0x0,
WS_OVERLAPPEDWINDOW = WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_SIZEFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX, WS_OVERLAPPEDWINDOW = WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX,
WS_POPUP = 0x80000000u, WS_POPUP = 0x80000000u,
WS_POPUPWINDOW = WS_POPUP | WS_BORDER | WS_SYSMENU, WS_POPUPWINDOW = WS_POPUP | WS_BORDER | WS_SYSMENU,
WS_SIZEFRAME = 0x40000,
WS_SYSMENU = 0x80000, WS_SYSMENU = 0x80000,
WS_TABSTOP = 0x10000, WS_TABSTOP = 0x10000,
WS_THICKFRAME = 0x40000, WS_THICKFRAME = 0x40000,

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

@ -1269,7 +1269,7 @@ namespace Avalonia.Win32
var cy = Math.Abs(monitorInfo.rcWork.bottom - y); var cy = Math.Abs(monitorInfo.rcWork.bottom - y);
var style = (WindowStyles)GetWindowLong(_hwnd, (int)WindowLongParam.GWL_STYLE); var style = (WindowStyles)GetWindowLong(_hwnd, (int)WindowLongParam.GWL_STYLE);
if (!style.HasFlag(WindowStyles.WS_SIZEFRAME)) if (!style.HasFlag(WindowStyles.WS_THICKFRAME))
{ {
// When calling SetWindowPos on a maximized window it automatically adjusts // When calling SetWindowPos on a maximized window it automatically adjusts
// for "hidden" borders which are placed offscreen, EVEN IF THE WINDOW HAS // for "hidden" borders which are placed offscreen, EVEN IF THE WINDOW HAS
@ -1406,16 +1406,16 @@ namespace Avalonia.Win32
if (newProperties.IsResizable || newProperties.WindowState == WindowState.Maximized) if (newProperties.IsResizable || newProperties.WindowState == WindowState.Maximized)
{ {
style |= WindowStyles.WS_SIZEFRAME; style |= WindowStyles.WS_THICKFRAME;
style |= WindowStyles.WS_MAXIMIZEBOX; style |= WindowStyles.WS_MAXIMIZEBOX;
} }
else else
{ {
style &= ~WindowStyles.WS_SIZEFRAME; style &= ~WindowStyles.WS_THICKFRAME;
style &= ~WindowStyles.WS_MAXIMIZEBOX; style &= ~WindowStyles.WS_MAXIMIZEBOX;
} }
const WindowStyles fullDecorationFlags = WindowStyles.WS_CAPTION | WindowStyles.WS_SYSMENU | WindowStyles.WS_THICKFRAME | WindowStyles.WS_BORDER; const WindowStyles fullDecorationFlags = WindowStyles.WS_CAPTION | WindowStyles.WS_SYSMENU | WindowStyles.WS_BORDER;
if (newProperties.Decorations == SystemDecorations.Full) if (newProperties.Decorations == SystemDecorations.Full)
{ {

Loading…
Cancel
Save