Browse Source

add WindowState to window properties in win32 window impl (#13536)

pull/13673/head
Emmanuel Hansen 3 years ago
committed by GitHub
parent
commit
56d2d0cc8a
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 6
      src/Windows/Avalonia.Win32/WindowImpl.AppWndProc.cs
  2. 9
      src/Windows/Avalonia.Win32/WindowImpl.cs

6
src/Windows/Avalonia.Win32/WindowImpl.AppWndProc.cs

@ -615,6 +615,12 @@ namespace Avalonia.Win32
{
_lastWindowState = windowState;
var newWindowProperties = _windowProperties;
newWindowProperties.WindowState = windowState;
UpdateWindowProperties(newWindowProperties);
WindowStateChanged?.Invoke(windowState);
if (_isClientAreaExtended)

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

@ -1087,6 +1087,8 @@ namespace Avalonia.Win32
throw new ArgumentException("Invalid WindowState.");
}
newWindowProperties.WindowState = state;
UpdateWindowProperties(newWindowProperties);
if (command.HasValue)
@ -1292,7 +1294,7 @@ namespace Avalonia.Win32
if (IsWindowVisible(_hwnd))
style |= WindowStyles.WS_VISIBLE;
if (newProperties.IsResizable)
if (newProperties.IsResizable || newProperties.WindowState == WindowState.Maximized)
{
style |= WindowStyles.WS_SIZEFRAME;
style |= WindowStyles.WS_MAXIMIZEBOX;
@ -1303,7 +1305,7 @@ namespace Avalonia.Win32
style &= ~WindowStyles.WS_MAXIMIZEBOX;
}
const WindowStyles fullDecorationFlags = WindowStyles.WS_CAPTION | WindowStyles.WS_SYSMENU;
const WindowStyles fullDecorationFlags = WindowStyles.WS_CAPTION | WindowStyles.WS_SYSMENU | WindowStyles.WS_THICKFRAME | WindowStyles.WS_BORDER;
if (newProperties.Decorations == SystemDecorations.Full)
{
@ -1313,7 +1315,7 @@ namespace Avalonia.Win32
{
style &= ~fullDecorationFlags;
if (newProperties.Decorations == SystemDecorations.BorderOnly && WindowState != WindowState.Maximized)
if (newProperties.Decorations == SystemDecorations.BorderOnly && newProperties.WindowState != WindowState.Maximized)
{
style |= WindowStyles.WS_THICKFRAME | WindowStyles.WS_BORDER;
}
@ -1487,6 +1489,7 @@ namespace Avalonia.Win32
public bool IsResizable;
public SystemDecorations Decorations;
public bool IsFullScreen;
public WindowState WindowState;
}
private struct ResizeReasonScope : IDisposable

Loading…
Cancel
Save