From 8251d797c69abcb5cb941f427db3827be2e16c19 Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Wed, 18 May 2022 16:53:14 +0200 Subject: [PATCH] Merge pull request #8095 from sn4k3/master Respect Window MaxWidth and MaxHeight when using any SizeToContent to Auto --- src/Avalonia.Controls/Window.cs | 9 ++++++++ .../WindowTests.cs | 21 +++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/src/Avalonia.Controls/Window.cs b/src/Avalonia.Controls/Window.cs index 153053d684..ed8a86445f 100644 --- a/src/Avalonia.Controls/Window.cs +++ b/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); diff --git a/tests/Avalonia.Controls.UnitTests/WindowTests.cs b/tests/Avalonia.Controls.UnitTests/WindowTests.cs index f643a84e37..63ccf74c2b 100644 --- a/tests/Avalonia.Controls.UnitTests/WindowTests.cs +++ b/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() {