Browse Source

Merge pull request #8095 from sn4k3/master

Respect Window MaxWidth and MaxHeight when using any SizeToContent to Auto
pull/8158/head
Steven Kirk 4 years ago
committed by GitHub
parent
commit
40a9d2ff76
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 9
      src/Avalonia.Controls/Window.cs
  2. 21
      tests/Avalonia.Controls.UnitTests/WindowTests.cs

9
src/Avalonia.Controls/Window.cs

@ -917,6 +917,15 @@ namespace Avalonia.Controls
var constraint = clientSize; var constraint = clientSize;
var maxAutoSize = PlatformImpl?.MaxAutoSizeHint ?? Size.Infinity; 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)) if (sizeToContent.HasAllFlags(SizeToContent.Width))
{ {
constraint = constraint.WithWidth(maxAutoSize.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] [Fact]
public void SizeToContent_Should_Not_Be_Lost_On_Show() public void SizeToContent_Should_Not_Be_Lost_On_Show()
{ {

Loading…
Cancel
Save