From d51c0471fecbbff07b94fe50c0eaa7924b1c903b Mon Sep 17 00:00:00 2001 From: Lubomir Tetak <50887170+ltetak@users.noreply.github.com> Date: Tue, 5 Mar 2024 05:01:25 +0100 Subject: [PATCH] CanResize does not work on Windows (#14782) --- src/Windows/Avalonia.Win32/Interop/UnmanagedMethods.cs | 3 +-- src/Windows/Avalonia.Win32/WindowImpl.cs | 8 ++++---- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/Windows/Avalonia.Win32/Interop/UnmanagedMethods.cs b/src/Windows/Avalonia.Win32/Interop/UnmanagedMethods.cs index 7b132f3857..079a0d3c30 100644 --- a/src/Windows/Avalonia.Win32/Interop/UnmanagedMethods.cs +++ b/src/Windows/Avalonia.Win32/Interop/UnmanagedMethods.cs @@ -496,10 +496,9 @@ namespace Avalonia.Win32.Interop WS_MINIMIZE = 0x20000000, WS_MINIMIZEBOX = 0x20000, 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_POPUPWINDOW = WS_POPUP | WS_BORDER | WS_SYSMENU, - WS_SIZEFRAME = 0x40000, WS_SYSMENU = 0x80000, WS_TABSTOP = 0x10000, WS_THICKFRAME = 0x40000, diff --git a/src/Windows/Avalonia.Win32/WindowImpl.cs b/src/Windows/Avalonia.Win32/WindowImpl.cs index f2b1401ba6..8a4aaba6ab 100644 --- a/src/Windows/Avalonia.Win32/WindowImpl.cs +++ b/src/Windows/Avalonia.Win32/WindowImpl.cs @@ -1269,7 +1269,7 @@ namespace Avalonia.Win32 var cy = Math.Abs(monitorInfo.rcWork.bottom - y); 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 // 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) { - style |= WindowStyles.WS_SIZEFRAME; + style |= WindowStyles.WS_THICKFRAME; style |= WindowStyles.WS_MAXIMIZEBOX; } else { - style &= ~WindowStyles.WS_SIZEFRAME; + style &= ~WindowStyles.WS_THICKFRAME; 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) {