diff --git a/src/Avalonia.Controls/Platform/IWindowImpl.cs b/src/Avalonia.Controls/Platform/IWindowImpl.cs index 15315063fe..55fe8c328b 100644 --- a/src/Avalonia.Controls/Platform/IWindowImpl.cs +++ b/src/Avalonia.Controls/Platform/IWindowImpl.cs @@ -104,6 +104,8 @@ namespace Avalonia.Platform void SetExtendClientAreaTitleBarHeightHint(double titleBarHeight); Action ExtendClientAreaToDecorationsChanged { get; set; } + + bool NeedsManagedDecorations { get; } Thickness ExtendedMargins { get; } diff --git a/src/Avalonia.Controls/Window.cs b/src/Avalonia.Controls/Window.cs index 3bbe0ce4e1..d1ad33e9e8 100644 --- a/src/Avalonia.Controls/Window.cs +++ b/src/Avalonia.Controls/Window.cs @@ -211,8 +211,6 @@ namespace Avalonia.Controls { w.PlatformImpl.SetExtendClientAreaChromeHints((ExtendClientAreaChromeHints)e.NewValue); } - - w.HandleChromeHintsChanged((ExtendClientAreaChromeHints)e.NewValue); }); ExtendClientAreaTitleBarHeightHintProperty.Changed.AddClassHandler( @@ -543,6 +541,20 @@ namespace Avalonia.Controls WindowDecorationMargins = PlatformImpl.ExtendedMargins; OffScreenMargin = PlatformImpl.OffScreenMargin; + + if(PlatformImpl.NeedsManagedDecorations) + { + if (_managedTitleBar == null) + { + _managedTitleBar = new TitleBar(this); + _managedTitleBar.Attach(); + } + } + else + { + _managedTitleBar?.Detach(); + _managedTitleBar = null; + } } /// @@ -907,26 +919,6 @@ namespace Avalonia.Controls base.HandleResized(clientSize); } - private void HandleChromeHintsChanged (ExtendClientAreaChromeHints hints) - { - if(hints.HasFlag(ExtendClientAreaChromeHints.ManagedChromeButtons)) - { - if(_managedTitleBar == null) - { - _managedTitleBar = new TitleBar(this); - } - - _managedTitleBar.Attach(); - } - else - { - if(_managedTitleBar != null) - { - _managedTitleBar.Detach(); - } - } - } - /// /// Raises the event. /// diff --git a/src/Windows/Avalonia.Win32/WindowImpl.cs b/src/Windows/Avalonia.Win32/WindowImpl.cs index b3c8387950..250b0cf029 100644 --- a/src/Windows/Avalonia.Win32/WindowImpl.cs +++ b/src/Windows/Avalonia.Win32/WindowImpl.cs @@ -1057,7 +1057,9 @@ namespace Avalonia.Win32 public bool IsClientAreaExtendedToDecorations => _isClientAreaExtended; - public Action ExtendClientAreaToDecorationsChanged { get; set; } + public Action ExtendClientAreaToDecorationsChanged { get; set; } + + public bool NeedsManagedDecorations => _isClientAreaExtended && _extendChromeHints.HasFlag(ExtendClientAreaChromeHints.PreferSystemChromeButtons); public Thickness ExtendedMargins => _extendedMargins;