Browse Source

Merge pull request #8095 from sn4k3/master

Respect Window MaxWidth and MaxHeight when using any SizeToContent to Auto
pull/8239/head
Steven Kirk 4 years ago
committed by Dan Walmsley
parent
commit
8251d797c6
  1. 9
      src/Avalonia.Controls/Window.cs
  2. 21
      tests/Avalonia.Controls.UnitTests/WindowTests.cs

9
src/Avalonia.Controls/Window.cs

@ -918,6 +918,15 @@ namespace Avalonia.Controls
var constraint = clientSize;
var maxAutoSize = PlatformImpl?.MaxAutoSizeHint ?? Size.Infinity;
if (MaxWidth > 0 && MaxWidth < maxAutoSize.Width)
{
maxAutoSize = maxAutoSize.WithWidth(MaxWidth);
}
if (MaxHeight > 0 && MaxHeight < maxAutoSize.Height)
{
maxAutoSize = maxAutoSize.WithHeight(MaxHeight);
}
if (sizeToContent.HasAllFlags(SizeToContent.Width))
{
constraint = constraint.WithWidth(maxAutoSize.Width);

21
tests/Avalonia.Controls.UnitTests/WindowTests.cs

@ -719,6 +719,27 @@ namespace Avalonia.Controls.UnitTests
}
}
[Fact]
public void MaxWidth_And_MaxHeight_Should_Be_Respected_With_SizeToContent_WidthAndHeight()
{
using (UnitTestApplication.Start(TestServices.StyledWindow))
{
var child = new ChildControl();
var target = new Window()
{
SizeToContent = SizeToContent.WidthAndHeight,
MaxWidth = 300,
MaxHeight = 700,
Content = child,
};
Show(target);
Assert.Equal(new[] { new Size(300, 700) }, child.MeasureSizes);
}
}
[Fact]
public void SizeToContent_Should_Not_Be_Lost_On_Show()
{

Loading…
Cancel
Save