Browse Source

Rename SystemDecorations to WindowDecorations since they aren't necessary "system". (#20796)

* Rename SystemDecorations to WindowDecorations since they aren't necessary system.

* Apply suggestions from code review

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
pull/20804/head
Nikita Tsukanov 3 weeks ago
committed by GitHub
parent
commit
ba43523daf
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 60
      api/Avalonia.nupkg.xml
  2. 10
      samples/ControlCatalog/DecoratedWindow.xaml
  3. 6
      samples/ControlCatalog/MainView.xaml
  4. 6
      samples/ControlCatalog/MainView.xaml.cs
  5. 6
      samples/IntegrationTestApp/Pages/WindowPage.axaml.cs
  6. 2
      samples/IntegrationTestApp/ShowWindowTest.axaml
  7. 4
      src/Avalonia.Controls/Platform/IWindowImpl.cs
  8. 35
      src/Avalonia.Controls/Window.cs
  9. 2
      src/Avalonia.DesignerSupport/Remote/PreviewerWindowImpl.cs
  10. 2
      src/Avalonia.DesignerSupport/Remote/Stubs.cs
  11. 6
      src/Avalonia.Native/WindowImpl.cs
  12. 24
      src/Avalonia.X11/X11Window.cs
  13. 2
      src/Headless/Avalonia.Headless/HeadlessWindowImpl.cs
  14. 2
      src/Windows/Avalonia.Win32/EmbeddedWindowImpl.cs
  15. 2
      src/Windows/Avalonia.Win32/PopupImpl.cs
  16. 2
      src/Windows/Avalonia.Win32/TrayIconImpl.cs
  17. 2
      src/Windows/Avalonia.Win32/WindowImpl.AppWndProc.cs
  18. 22
      src/Windows/Avalonia.Win32/WindowImpl.cs
  19. 20
      tests/Avalonia.IntegrationTests.Appium/WindowTests_MacOS.cs
  20. 16
      tests/Avalonia.IntegrationTests.Win32/ExtendClientAreaWindowTests.cs
  21. 16
      tests/Avalonia.IntegrationTests.Win32/StandardWindowTests.cs

60
api/Avalonia.nupkg.xml

@ -385,6 +385,12 @@
<Left>baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll</Left>
<Right>current/Avalonia/lib/net10.0/Avalonia.Controls.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0001</DiagnosticId>
<Target>T:Avalonia.Controls.SystemDecorations</Target>
<Left>baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll</Left>
<Right>current/Avalonia/lib/net10.0/Avalonia.Controls.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0001</DiagnosticId>
<Target>T:Avalonia.Controls.SystemDialog</Target>
@ -811,6 +817,12 @@
<Left>baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll</Left>
<Right>current/Avalonia/lib/net8.0/Avalonia.Controls.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0001</DiagnosticId>
<Target>T:Avalonia.Controls.SystemDecorations</Target>
<Left>baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll</Left>
<Right>current/Avalonia/lib/net8.0/Avalonia.Controls.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0001</DiagnosticId>
<Target>T:Avalonia.Controls.SystemDialog</Target>
@ -1489,6 +1501,12 @@
<Left>baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll</Left>
<Right>current/Avalonia/lib/net10.0/Avalonia.Controls.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0002</DiagnosticId>
<Target>F:Avalonia.Controls.Window.SystemDecorationsProperty</Target>
<Left>baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll</Left>
<Right>current/Avalonia/lib/net10.0/Avalonia.Controls.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0002</DiagnosticId>
<Target>M:Avalonia.AppBuilder.get_LifetimeOverride</Target>
@ -1867,6 +1885,12 @@
<Left>baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll</Left>
<Right>current/Avalonia/lib/net10.0/Avalonia.Controls.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0002</DiagnosticId>
<Target>M:Avalonia.Controls.Window.get_SystemDecorations</Target>
<Left>baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll</Left>
<Right>current/Avalonia/lib/net10.0/Avalonia.Controls.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0002</DiagnosticId>
<Target>M:Avalonia.Controls.Window.set_ExtendClientAreaChromeHints(Avalonia.Platform.ExtendClientAreaChromeHints)</Target>
@ -1897,6 +1921,12 @@
<Left>baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll</Left>
<Right>current/Avalonia/lib/net10.0/Avalonia.Controls.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0002</DiagnosticId>
<Target>M:Avalonia.Platform.IWindowImpl.SetSystemDecorations(Avalonia.Controls.SystemDecorations)</Target>
<Left>baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll</Left>
<Right>current/Avalonia/lib/net10.0/Avalonia.Controls.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0002</DiagnosticId>
<Target>M:Avalonia.Platform.Screen.#ctor(System.Double,Avalonia.PixelRect,Avalonia.PixelRect,System.Boolean)</Target>
@ -2665,6 +2695,12 @@
<Left>baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll</Left>
<Right>current/Avalonia/lib/net8.0/Avalonia.Controls.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0002</DiagnosticId>
<Target>F:Avalonia.Controls.Window.SystemDecorationsProperty</Target>
<Left>baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll</Left>
<Right>current/Avalonia/lib/net8.0/Avalonia.Controls.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0002</DiagnosticId>
<Target>M:Avalonia.AppBuilder.get_LifetimeOverride</Target>
@ -3043,6 +3079,12 @@
<Left>baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll</Left>
<Right>current/Avalonia/lib/net8.0/Avalonia.Controls.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0002</DiagnosticId>
<Target>M:Avalonia.Controls.Window.get_SystemDecorations</Target>
<Left>baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll</Left>
<Right>current/Avalonia/lib/net8.0/Avalonia.Controls.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0002</DiagnosticId>
<Target>M:Avalonia.Controls.Window.set_ExtendClientAreaChromeHints(Avalonia.Platform.ExtendClientAreaChromeHints)</Target>
@ -3073,6 +3115,12 @@
<Left>baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll</Left>
<Right>current/Avalonia/lib/net8.0/Avalonia.Controls.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0002</DiagnosticId>
<Target>M:Avalonia.Platform.IWindowImpl.SetSystemDecorations(Avalonia.Controls.SystemDecorations)</Target>
<Left>baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll</Left>
<Right>current/Avalonia/lib/net8.0/Avalonia.Controls.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0002</DiagnosticId>
<Target>M:Avalonia.Platform.Screen.#ctor(System.Double,Avalonia.PixelRect,Avalonia.PixelRect,System.Boolean)</Target>
@ -3331,6 +3379,12 @@
<Left>baseline/Avalonia/lib/net10.0/Avalonia.Base.dll</Left>
<Right>current/Avalonia/lib/net10.0/Avalonia.Base.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0006</DiagnosticId>
<Target>M:Avalonia.Platform.IWindowImpl.SetWindowDecorations(Avalonia.Controls.WindowDecorations)</Target>
<Left>baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll</Left>
<Right>current/Avalonia/lib/net10.0/Avalonia.Controls.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0006</DiagnosticId>
<Target>M:Avalonia.Platform.IWindowingPlatform.GetWindowsZOrder(System.ReadOnlySpan{Avalonia.Platform.IWindowImpl},System.Span{System.Int64})</Target>
@ -3547,6 +3601,12 @@
<Left>baseline/Avalonia/lib/net8.0/Avalonia.Base.dll</Left>
<Right>current/Avalonia/lib/net8.0/Avalonia.Base.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0006</DiagnosticId>
<Target>M:Avalonia.Platform.IWindowImpl.SetWindowDecorations(Avalonia.Controls.WindowDecorations)</Target>
<Left>baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll</Left>
<Right>current/Avalonia/lib/net8.0/Avalonia.Controls.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0006</DiagnosticId>
<Target>M:Avalonia.Platform.IWindowingPlatform.GetWindowsZOrder(System.ReadOnlySpan{Avalonia.Platform.IWindowImpl},System.Span{System.Int64})</Target>

10
samples/ControlCatalog/DecoratedWindow.xaml

@ -2,7 +2,7 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="ControlCatalog.DecoratedWindow"
Title="Avalonia Control Gallery"
SystemDecorations="None" Name="Window">
WindowDecorations="None" Name="Window">
<NativeMenu.Menu>
<NativeMenu>
<NativeMenuItem Header="Decorated">
@ -43,11 +43,11 @@
<StackPanel>
<TextBlock>Hello world!</TextBlock>
<ComboBox SelectedItem="{Binding ElementName=Window, Path=SystemDecorations}">
<ComboBox SelectedItem="{Binding ElementName=Window, Path=WindowDecorations}">
<ComboBox.Items>
<SystemDecorations>None</SystemDecorations>
<SystemDecorations>BorderOnly</SystemDecorations>
<SystemDecorations>Full</SystemDecorations>
<WindowDecorations>None</WindowDecorations>
<WindowDecorations>BorderOnly</WindowDecorations>
<WindowDecorations>Full</WindowDecorations>
</ComboBox.Items>
</ComboBox>
<CheckBox IsChecked="{Binding ElementName=Window, Path=CanResize}">CanResize</CheckBox>

6
samples/ControlCatalog/MainView.xaml

@ -218,9 +218,9 @@
SelectionChanged="Decorations_SelectionChanged"
ToolTip.Tip="System Decorations">
<ComboBox.Items>
<SystemDecorations>None</SystemDecorations>
<SystemDecorations>BorderOnly</SystemDecorations>
<SystemDecorations>Full</SystemDecorations>
<WindowDecorations>None</WindowDecorations>
<WindowDecorations>BorderOnly</WindowDecorations>
<WindowDecorations>Full</WindowDecorations>
</ComboBox.Items>
</ComboBox>
<ComboBox HorizontalAlignment="Stretch"

6
samples/ControlCatalog/MainView.xaml.cs

@ -45,9 +45,9 @@ namespace ControlCatalog
private void Decorations_SelectionChanged(object? sender, SelectionChangedEventArgs e)
{
if (TopLevel.GetTopLevel(this) is Window window && e.AddedItems.Count > 0 && e.AddedItems[0] is SystemDecorations systemDecorations)
if (TopLevel.GetTopLevel(this) is Window window && e.AddedItems.Count > 0 && e.AddedItems[0] is WindowDecorations systemDecorations)
{
window.SystemDecorations = systemDecorations;
window.WindowDecorations = systemDecorations;
}
}
@ -79,7 +79,7 @@ namespace ControlCatalog
base.OnAttachedToVisualTree(e);
if (TopLevel.GetTopLevel(this) is Window window)
Decorations.SelectedIndex = (int)window.SystemDecorations;
Decorations.SelectedIndex = (int)window.WindowDecorations;
var insets = TopLevel.GetTopLevel(this)!.InsetsManager;
if (insets != null)

6
samples/IntegrationTestApp/Pages/WindowPage.axaml.cs

@ -51,7 +51,7 @@ public partial class WindowPage : UserControl
ShowWindowSize.Text = string.Empty;
window.ExtendClientAreaToDecorationsHint = ShowWindowExtendClientAreaToDecorationsHint.IsChecked ?? false;
window.SystemDecorations = (SystemDecorations)ShowWindowSystemDecorations.SelectedIndex;
window.WindowDecorations = (WindowDecorations)ShowWindowSystemDecorations.SelectedIndex;
window.WindowState = (WindowState)ShowWindowState.SelectedIndex;
switch (ShowWindowMode.SelectedIndex)
@ -87,7 +87,7 @@ public partial class WindowPage : UserControl
{
Title = "Transparent Window",
Name = "TransparentWindow",
SystemDecorations = SystemDecorations.None,
WindowDecorations = WindowDecorations.None,
Background = Brushes.Transparent,
TransparencyLevelHint = new[] { WindowTransparencyLevel.Transparent },
WindowStartupLocation = WindowStartupLocation.CenterOwner,
@ -136,7 +136,7 @@ public partial class WindowPage : UserControl
Width = 200,
Height = 200,
Background = Brushes.Green,
SystemDecorations = SystemDecorations.None,
WindowDecorations = WindowDecorations.None,
WindowStartupLocation = WindowStartupLocation.CenterOwner,
Content = new Border
{

2
samples/IntegrationTestApp/ShowWindowTest.axaml

@ -45,7 +45,7 @@
</ComboBox>
<Label Grid.Column="0" Grid.Row="8">SystemDecorations</Label>
<ComboBox Name="CurrentSystemDecorations" Grid.Column="1" Grid.Row="8" SelectedIndex="{Binding SystemDecorations}">
<ComboBox Name="CurrentSystemDecorations" Grid.Column="1" Grid.Row="8" SelectedIndex="{Binding WindowDecorations}">
<ComboBoxItem Name="SystemDecorationsNone">None</ComboBoxItem>
<ComboBoxItem Name="SystemDecorationsBorderOnly">BorderOnly</ComboBoxItem>
<ComboBoxItem Name="SystemDecorationsFull">Full</ComboBoxItem>

4
src/Avalonia.Controls/Platform/IWindowImpl.cs

@ -46,9 +46,9 @@ namespace Avalonia.Platform
Action? GotInputWhenDisabled { get; set; }
/// <summary>
/// Enables or disables system window decorations (title bar, buttons, etc)
/// Enables or disables window decorations (title bar, buttons, etc)
/// </summary>
void SetSystemDecorations(SystemDecorations enabled);
void SetWindowDecorations(WindowDecorations enabled);
/// <summary>
/// Sets the icon of this window.

35
src/Avalonia.Controls/Window.cs

@ -45,9 +45,9 @@ namespace Avalonia.Controls
}
/// <summary>
/// Determines system decorations (title bar, border, etc) for a <see cref="Window"/>
/// Determines window decorations (title bar, border, etc) for a <see cref="Window"/>
/// </summary>
public enum SystemDecorations
public enum WindowDecorations
{
/// <summary>
/// No decorations
@ -132,10 +132,10 @@ namespace Avalonia.Controls
o => o.OffScreenMargin);
/// <summary>
/// Defines the <see cref="SystemDecorations"/> property.
/// Defines the <see cref="WindowDecorations"/> property.
/// </summary>
public static readonly StyledProperty<SystemDecorations> SystemDecorationsProperty =
AvaloniaProperty.Register<Window, SystemDecorations>(nameof(SystemDecorations), SystemDecorations.Full);
public static readonly StyledProperty<WindowDecorations> WindowDecorationsProperty =
AvaloniaProperty.Register<Window, WindowDecorations>(nameof(WindowDecorations), WindowDecorations.Full);
/// <summary>
/// Defines the <see cref="ShowActivated"/> property.
@ -357,12 +357,19 @@ namespace Avalonia.Controls
}
/// <summary>
/// Sets the system decorations (title bar, border, etc)
/// Gets or sets the window decorations (title bar, border, etc).
/// </summary>
public SystemDecorations SystemDecorations
public WindowDecorations WindowDecorations
{
get => GetValue(SystemDecorationsProperty);
set => SetValue(SystemDecorationsProperty, value);
get => GetValue(WindowDecorationsProperty);
set => SetValue(WindowDecorationsProperty, value);
}
[Obsolete("Use WindowDecorations instead.")]
public WindowDecorations SystemDecorations
{
get => WindowDecorations;
set => WindowDecorations = value;
}
/// <summary>
@ -676,10 +683,10 @@ namespace Avalonia.Controls
{
var platformNeeds = PlatformImpl?.RequestedDrawnDecorations ?? PlatformRequestedDrawnDecoration.None;
var parts = Chrome.DrawnWindowDecorationParts.None;
if (SystemDecorations != SystemDecorations.None)
if (WindowDecorations != WindowDecorations.None)
{
if (platformNeeds.HasFlag(PlatformRequestedDrawnDecoration.TitleBar) &&
SystemDecorations == SystemDecorations.Full)
WindowDecorations == WindowDecorations.Full)
parts |= Chrome.DrawnWindowDecorationParts.TitleBar;
if (platformNeeds.HasFlag(PlatformRequestedDrawnDecoration.Shadow))
parts |= Chrome.DrawnWindowDecorationParts.Shadow;
@ -1343,11 +1350,11 @@ namespace Avalonia.Controls
protected override void OnPropertyChanged(AvaloniaPropertyChangedEventArgs change)
{
base.OnPropertyChanged(change);
if (change.Property == SystemDecorationsProperty)
if (change.Property == WindowDecorationsProperty)
{
var (_, typedNewValue) = change.GetOldAndNewValue<SystemDecorations>();
var (_, typedNewValue) = change.GetOldAndNewValue<WindowDecorations>();
PlatformImpl?.SetSystemDecorations(typedNewValue);
PlatformImpl?.SetWindowDecorations(typedNewValue);
}
else if (change.Property == OwnerProperty)

2
src/Avalonia.DesignerSupport/Remote/PreviewerWindowImpl.cs

@ -124,7 +124,7 @@ namespace Avalonia.DesignerSupport.Remote
{
}
public void SetSystemDecorations(SystemDecorations enabled)
public void SetWindowDecorations(WindowDecorations enabled)
{
}

2
src/Avalonia.DesignerSupport/Remote/Stubs.cs

@ -138,7 +138,7 @@ namespace Avalonia.DesignerSupport.Remote
{
}
public void SetSystemDecorations(SystemDecorations enabled)
public void SetWindowDecorations(WindowDecorations enabled)
{
}

6
src/Avalonia.Native/WindowImpl.cs

@ -20,7 +20,7 @@ namespace Avalonia.Native
private readonly ITopLevelNativeMenuExporter _nativeMenuExporter;
private bool _canResize = true;
private bool _canMaximize = true;
private Controls.SystemDecorations _decorations = Controls.SystemDecorations.Full;
private Controls.WindowDecorations _decorations = Controls.WindowDecorations.Full;
internal WindowImpl(IAvaloniaNativeFactory factory, AvaloniaNativePlatformOptions opts) : base(factory)
{
@ -91,7 +91,7 @@ namespace Avalonia.Native
_native.SetCanMaximize(value.AsComBool());
}
public void SetSystemDecorations(Controls.SystemDecorations enabled)
public void SetWindowDecorations(Controls.WindowDecorations enabled)
{
_decorations = enabled;
_native.SetDecorations((Interop.SystemDecorations)enabled);
@ -186,7 +186,7 @@ namespace Avalonia.Native
if(_native is MicroComProxyBase pb && pb.IsDisposed)
return;
if (WindowState == WindowState.FullScreen || !_isExtended || _decorations != Controls.SystemDecorations.Full)
if (WindowState == WindowState.FullScreen || !_isExtended || _decorations != Controls.WindowDecorations.Full)
{
ExtendedMargins = new Thickness();
}

24
src/Avalonia.X11/X11Window.cs

@ -317,7 +317,7 @@ namespace Avalonia.X11
MotifDecorations.Maximize | MotifDecorations.Minimize | MotifDecorations.ResizeH;
if (_popup
|| _systemDecorations == SystemDecorations.None)
|| _windowDecorations == WindowDecorations.None)
decorations = 0;
var isDisabled = !IsEnabled;
@ -695,7 +695,7 @@ namespace Avalonia.X11
private Thickness? GetFrameExtents()
{
if (_systemDecorations != SystemDecorations.Full)
if (_windowDecorations != WindowDecorations.Full)
return new Thickness(0);
XGetWindowProperty(_x11.Display, _handle, _x11.Atoms._NET_FRAME_EXTENTS, IntPtr.Zero,
@ -865,8 +865,8 @@ namespace Avalonia.X11
return rv;
}
private SystemDecorations _requestedSystemDecorations = SystemDecorations.Full;
private SystemDecorations _systemDecorations = SystemDecorations.Full;
private WindowDecorations _requestedWindowDecorations = WindowDecorations.Full;
private WindowDecorations _windowDecorations = WindowDecorations.Full;
private bool _canResize = true;
private bool _canMinimize = true;
private bool _canMaximize = true;
@ -1179,9 +1179,9 @@ namespace Avalonia.X11
public PixelPoint PointToScreen(Point point) => _mode.PointToScreen(point);
public void SetSystemDecorations(SystemDecorations enabled)
public void SetWindowDecorations(WindowDecorations enabled)
{
_requestedSystemDecorations = enabled;
_requestedWindowDecorations = enabled;
UpdateEffectiveSystemDecorations();
}
@ -1189,15 +1189,15 @@ namespace Avalonia.X11
{
// When extending client area, always hide WM decorations (we draw our own)
var effective = _extendClientAreaToDecorations
? SystemDecorations.None
: (_requestedSystemDecorations == SystemDecorations.Full
? SystemDecorations.Full
: SystemDecorations.None);
? WindowDecorations.None
: (_requestedWindowDecorations == WindowDecorations.Full
? WindowDecorations.Full
: WindowDecorations.None);
if (_systemDecorations == effective)
if (_windowDecorations == effective)
return;
_systemDecorations = effective;
_windowDecorations = effective;
UpdateMotifHints();
UpdateSizeHints(null);
}

2
src/Headless/Avalonia.Headless/HeadlessWindowImpl.cs

@ -398,7 +398,7 @@ namespace Avalonia.Headless
}
public void SetSystemDecorations(SystemDecorations enabled)
public void SetWindowDecorations(WindowDecorations enabled)
{
}

2
src/Windows/Avalonia.Win32/EmbeddedWindowImpl.cs

@ -14,7 +14,7 @@ namespace Avalonia.Win32
IsResizable = false,
IsMinimizable = false,
IsMaximizable = false,
Decorations = SystemDecorations.None
Decorations = WindowDecorations.None
};
}

2
src/Windows/Avalonia.Win32/PopupImpl.cs

@ -113,7 +113,7 @@ namespace Avalonia.Win32
IsResizable = false,
IsMinimizable = false,
IsMaximizable = false,
Decorations = SystemDecorations.None,
Decorations = WindowDecorations.None,
};
_parent = parent;

2
src/Windows/Avalonia.Win32/TrayIconImpl.cs

@ -231,7 +231,7 @@ namespace Avalonia.Win32
var _trayMenu = new TrayPopupRoot
{
Name = "AvaloniaTrayPopupRoot_" + _tooltipText,
SystemDecorations = SystemDecorations.None,
WindowDecorations = WindowDecorations.None,
SizeToContent = SizeToContent.WidthAndHeight,
Background = null,
TransparencyLevelHint = new[] { WindowTransparencyLevel.Transparent },

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

@ -60,7 +60,7 @@ namespace Avalonia.Win32
case WindowsMessage.WM_NCCALCSIZE when ToInt32(wParam) == 1:
{
if (_windowProperties.Decorations == SystemDecorations.None)
if (_windowProperties.Decorations == WindowDecorations.None)
return IntPtr.Zero;
// When the client area is extended into the frame, we are still requesting the standard styles matching

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

@ -139,7 +139,7 @@ namespace Avalonia.Win32
IsResizable = true,
IsMinimizable = true,
IsMaximizable = true,
Decorations = SystemDecorations.Full
Decorations = WindowDecorations.Full
};
var surfaceFactory = AvaloniaLocator.Current.GetService<IWindowsSurfaceFactory>();
@ -544,7 +544,7 @@ namespace Avalonia.Win32
}
}
private bool HasFullDecorations => _windowProperties.Decorations == SystemDecorations.Full;
private bool HasFullDecorations => _windowProperties.Decorations == WindowDecorations.Full;
public void Move(PixelPoint point) => Position = point;
@ -596,7 +596,7 @@ namespace Avalonia.Win32
{
// We told Windows we have a caption, but since we're actually extending into it,
// it should be excluded from the final window bounds.
if (_windowProperties.Decorations != SystemDecorations.None)
if (_windowProperties.Decorations != WindowDecorations.None)
{
var borderOnlyRect = ClientRectToWindowRect(requestedClientRect, WindowStyles.WS_BORDER);
requestedWindowRect.top = borderOnlyRect.top;
@ -893,7 +893,7 @@ namespace Avalonia.Win32
UpdateWindowProperties(newWindowProperties);
}
public void SetSystemDecorations(SystemDecorations value)
public void SetWindowDecorations(WindowDecorations value)
{
var newWindowProperties = _windowProperties;
@ -1149,7 +1149,7 @@ namespace Avalonia.Win32
borderCaptionThickness.left *= -1;
borderCaptionThickness.top *= -1;
if (_windowProperties.Decorations == SystemDecorations.Full)
if (_windowProperties.Decorations == WindowDecorations.Full)
{
if (_extendTitleBarHint != -1)
borderCaptionThickness.top = (int)(_extendTitleBarHint * RenderScaling);
@ -1294,7 +1294,7 @@ namespace Avalonia.Win32
newWindowProperties.WindowState = state;
UpdateWindowProperties(newWindowProperties, newWindowProperties.Decorations != SystemDecorations.Full);
UpdateWindowProperties(newWindowProperties, newWindowProperties.Decorations != WindowDecorations.Full);
if (command.HasValue)
{
@ -1466,7 +1466,7 @@ namespace Avalonia.Win32
switch (newProperties.Decorations)
{
case SystemDecorations.Full:
case WindowDecorations.Full:
style |= WindowStyles.WS_BORDER | WindowStyles.WS_CAPTION | WindowStyles.WS_SYSMENU;
if (newProperties.IsMinimizable)
@ -1477,12 +1477,12 @@ namespace Avalonia.Win32
break;
case SystemDecorations.BorderOnly:
case WindowDecorations.BorderOnly:
style |= WindowStyles.WS_BORDER;
break;
}
if (newProperties.Decorations != SystemDecorations.None && newProperties.IsResizable)
if (newProperties.Decorations != WindowDecorations.None && newProperties.IsResizable)
style |= WindowStyles.WS_THICKFRAME;
var windowStates = GetWindowStateStyles();
@ -1508,7 +1508,7 @@ namespace Avalonia.Win32
if (!_isFullScreenActive && ((oldProperties.Decorations != newProperties.Decorations) || forceChanges))
{
var margin = newProperties.Decorations == SystemDecorations.BorderOnly ? 1 : 0;
var margin = newProperties.Decorations == WindowDecorations.BorderOnly ? 1 : 0;
var margins = new MARGINS
{
@ -1655,7 +1655,7 @@ namespace Avalonia.Win32
public bool IsResizable;
public bool IsMinimizable;
public bool IsMaximizable;
public SystemDecorations Decorations;
public WindowDecorations Decorations;
public bool IsFullScreen;
public WindowState WindowState;
}

20
tests/Avalonia.IntegrationTests.Appium/WindowTests_MacOS.cs

@ -345,13 +345,13 @@ namespace Avalonia.IntegrationTests.Appium
}
[PlatformTheory(TestPlatforms.MacOS)]
[InlineData(SystemDecorations.None)]
[InlineData(SystemDecorations.BorderOnly)]
[InlineData(SystemDecorations.Full)]
public void ExtendClientArea_SystemDecorations_Shows_Correct_Buttons(SystemDecorations decorations)
[InlineData(WindowDecorations.None)]
[InlineData(WindowDecorations.BorderOnly)]
[InlineData(WindowDecorations.Full)]
public void ExtendClientArea_SystemDecorations_Shows_Correct_Buttons(WindowDecorations decorations)
{
// #10650
using (OpenWindow(extendClientArea: true, systemDecorations: decorations))
using (OpenWindow(extendClientArea: true, windowDecorations: decorations))
{
var secondaryWindow = GetWindow("SecondaryWindow");
@ -359,7 +359,7 @@ namespace Avalonia.IntegrationTests.Appium
{
var chrome = secondaryWindow.GetSystemChromeButtons();
if (decorations == SystemDecorations.Full)
if (decorations == WindowDecorations.Full)
{
Assert.NotNull(chrome.Close);
Assert.NotNull(chrome.Minimize);
@ -374,7 +374,7 @@ namespace Avalonia.IntegrationTests.Appium
}
finally
{
if (decorations != SystemDecorations.Full)
if (decorations != WindowDecorations.Full)
{
secondaryWindow.FindElementByAccessibilityId("CurrentSystemDecorations").Click();
Session.FindElementByAccessibilityId("SystemDecorationsFull").SendClick();
@ -388,7 +388,7 @@ namespace Avalonia.IntegrationTests.Appium
ShowWindowMode mode = ShowWindowMode.NonOwned,
WindowStartupLocation location = WindowStartupLocation.Manual,
bool canResize = true,
SystemDecorations systemDecorations = SystemDecorations.Full,
WindowDecorations windowDecorations = WindowDecorations.Full,
bool extendClientArea = false)
{
var sizeTextBox = Session.FindElementByAccessibilityId("ShowWindowSize");
@ -417,10 +417,10 @@ namespace Avalonia.IntegrationTests.Appium
if (canResizeCheckBox.GetIsChecked() != canResize)
canResizeCheckBox.Click();
if (systemDecorationsComboBox.GetComboBoxValue() != systemDecorations.ToString())
if (systemDecorationsComboBox.GetComboBoxValue() != windowDecorations.ToString())
{
systemDecorationsComboBox.Click();
Session.FindElementByName(systemDecorations.ToString()).SendClick();
Session.FindElementByName(windowDecorations.ToString()).SendClick();
}
if (extendClientAreaCheckBox.GetIsChecked() != extendClientArea)

16
tests/Avalonia.IntegrationTests.Win32/ExtendClientAreaWindowTests.cs

@ -26,7 +26,7 @@ public abstract class ExtendClientAreaWindowTests : IDisposable
}
}
protected abstract SystemDecorations Decorations { get; }
protected abstract WindowDecorations Decorations { get; }
public static MatrixTheoryData<bool, WindowState> States
=> new([true, false], Enum.GetValues<WindowState>());
@ -39,7 +39,7 @@ public abstract class ExtendClientAreaWindowTests : IDisposable
{
CanResize = canResize,
WindowState = state,
SystemDecorations = Decorations,
WindowDecorations = Decorations,
ExtendClientAreaToDecorationsHint = true,
Width = ClientWidth,
Height = ClientHeight,
@ -160,8 +160,8 @@ public abstract class ExtendClientAreaWindowTests : IDisposable
public sealed class DecorationsFull : ExtendClientAreaWindowTests
{
protected override SystemDecorations Decorations
=> SystemDecorations.Full;
protected override WindowDecorations Decorations
=> WindowDecorations.Full;
protected override void VerifyNormalState(bool canResize)
{
@ -182,8 +182,8 @@ public abstract class ExtendClientAreaWindowTests : IDisposable
public sealed class DecorationsBorderOnly : ExtendClientAreaWindowTests
{
protected override SystemDecorations Decorations
=> SystemDecorations.BorderOnly;
protected override WindowDecorations Decorations
=> WindowDecorations.BorderOnly;
protected override void VerifyNormalState(bool canResize)
{
@ -197,8 +197,8 @@ public abstract class ExtendClientAreaWindowTests : IDisposable
public sealed class DecorationsNone : ExtendClientAreaWindowTests
{
protected override SystemDecorations Decorations
=> SystemDecorations.None;
protected override WindowDecorations Decorations
=> WindowDecorations.None;
protected override void VerifyNormalState(bool canResize)
{

16
tests/Avalonia.IntegrationTests.Win32/StandardWindowTests.cs

@ -27,7 +27,7 @@ public abstract class StandardWindowTests : IDisposable
}
}
protected abstract SystemDecorations Decorations { get; }
protected abstract WindowDecorations Decorations { get; }
protected abstract bool HasCaption { get; }
@ -42,7 +42,7 @@ public abstract class StandardWindowTests : IDisposable
{
CanResize = canResize,
WindowState = state,
SystemDecorations = Decorations,
WindowDecorations = Decorations,
ExtendClientAreaToDecorationsHint = false,
Width = ClientWidth,
Height = ClientHeight,
@ -108,8 +108,8 @@ public abstract class StandardWindowTests : IDisposable
public sealed class DecorationsFull : StandardWindowTests
{
protected override SystemDecorations Decorations
=> SystemDecorations.Full;
protected override WindowDecorations Decorations
=> WindowDecorations.Full;
protected override bool HasCaption
=> true;
@ -117,8 +117,8 @@ public abstract class StandardWindowTests : IDisposable
public sealed class DecorationsBorderOnly : StandardWindowTests
{
protected override SystemDecorations Decorations
=> SystemDecorations.BorderOnly;
protected override WindowDecorations Decorations
=> WindowDecorations.BorderOnly;
protected override bool HasCaption
=> false;
@ -126,8 +126,8 @@ public abstract class StandardWindowTests : IDisposable
public sealed class DecorationsNone : StandardWindowTests
{
protected override SystemDecorations Decorations
=> SystemDecorations.None;
protected override WindowDecorations Decorations
=> WindowDecorations.None;
protected override bool HasCaption
=> false;

Loading…
Cancel
Save