Browse Source

windowimpl tells window then managed chrome is required.

pull/3967/head
Dan Walmsley 6 years ago
parent
commit
28fdb43ae0
  1. 2
      src/Avalonia.Controls/Platform/IWindowImpl.cs
  2. 36
      src/Avalonia.Controls/Window.cs
  3. 4
      src/Windows/Avalonia.Win32/WindowImpl.cs

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

@ -104,6 +104,8 @@ namespace Avalonia.Platform
void SetExtendClientAreaTitleBarHeightHint(double titleBarHeight);
Action<bool> ExtendClientAreaToDecorationsChanged { get; set; }
bool NeedsManagedDecorations { get; }
Thickness ExtendedMargins { get; }

36
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<Window>(
@ -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;
}
}
/// <summary>
@ -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();
}
}
}
/// <summary>
/// Raises the <see cref="Closing"/> event.
/// </summary>

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

@ -1057,7 +1057,9 @@ namespace Avalonia.Win32
public bool IsClientAreaExtendedToDecorations => _isClientAreaExtended;
public Action<bool> ExtendClientAreaToDecorationsChanged { get; set; }
public Action<bool> ExtendClientAreaToDecorationsChanged { get; set; }
public bool NeedsManagedDecorations => _isClientAreaExtended && _extendChromeHints.HasFlag(ExtendClientAreaChromeHints.PreferSystemChromeButtons);
public Thickness ExtendedMargins => _extendedMargins;

Loading…
Cancel
Save