Browse Source
Merge pull request #3570 from AvaloniaUI/fixes/3569-window-sizing
Fix window sizing
pull/3575/head
Jumar Macato
7 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with
52 additions and
1 deletions
-
src/Avalonia.Controls/Window.cs
-
tests/Avalonia.Controls.UnitTests/WindowTests.cs
|
|
|
@ -529,7 +529,7 @@ namespace Avalonia.Controls |
|
|
|
{ |
|
|
|
var sizeToContent = SizeToContent; |
|
|
|
var clientSize = ClientSize; |
|
|
|
Size constraint = clientSize; |
|
|
|
var constraint = availableSize; |
|
|
|
|
|
|
|
if ((sizeToContent & SizeToContent.Width) != 0) |
|
|
|
{ |
|
|
|
|
|
|
|
@ -341,11 +341,62 @@ namespace Avalonia.Controls.UnitTests |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void Child_Should_Be_Measured_With_Width_And_Height_If_SizeToContent_Is_Manual() |
|
|
|
{ |
|
|
|
using (UnitTestApplication.Start(TestServices.StyledWindow)) |
|
|
|
{ |
|
|
|
var child = new ChildControl(); |
|
|
|
var target = new Window |
|
|
|
{ |
|
|
|
Width = 100, |
|
|
|
Height = 50, |
|
|
|
SizeToContent = SizeToContent.Manual, |
|
|
|
Content = child |
|
|
|
}; |
|
|
|
|
|
|
|
target.Show(); |
|
|
|
|
|
|
|
Assert.Equal(new Size(100, 50), child.MeasureSize); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void Child_Should_Be_Measured_With_Infinity_If_SizeToContent_Is_WidthAndHeight() |
|
|
|
{ |
|
|
|
using (UnitTestApplication.Start(TestServices.StyledWindow)) |
|
|
|
{ |
|
|
|
var child = new ChildControl(); |
|
|
|
var target = new Window |
|
|
|
{ |
|
|
|
Width = 100, |
|
|
|
Height = 50, |
|
|
|
SizeToContent = SizeToContent.WidthAndHeight, |
|
|
|
Content = child |
|
|
|
}; |
|
|
|
|
|
|
|
target.Show(); |
|
|
|
|
|
|
|
Assert.Equal(Size.Infinity, child.MeasureSize); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private IWindowImpl CreateImpl(Mock<IRenderer> renderer) |
|
|
|
{ |
|
|
|
return Mock.Of<IWindowImpl>(x => |
|
|
|
x.Scaling == 1 && |
|
|
|
x.CreateRenderer(It.IsAny<IRenderRoot>()) == renderer.Object); |
|
|
|
} |
|
|
|
|
|
|
|
private class ChildControl : Control |
|
|
|
{ |
|
|
|
public Size MeasureSize { get; private set; } |
|
|
|
|
|
|
|
protected override Size MeasureOverride(Size availableSize) |
|
|
|
{ |
|
|
|
MeasureSize = availableSize; |
|
|
|
return base.MeasureOverride(availableSize); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|