Browse Source

Merge 08f1abcabe into d5c30b6270

pull/20025/merge
Martin Florek 7 hours ago
committed by GitHub
parent
commit
13c6324596
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 4
      src/Avalonia.Controls/Presenters/ScrollContentPresenter.cs
  2. 38
      tests/Avalonia.Controls.UnitTests/Presenters/ScrollContentPresenterTests.cs

4
src/Avalonia.Controls/Presenters/ScrollContentPresenter.cs

@ -404,8 +404,8 @@ namespace Avalonia.Controls.Presenters
}
var constraint = new Size(
CanHorizontallyScroll ? double.PositiveInfinity : availableSize.Width,
CanVerticallyScroll ? double.PositiveInfinity : availableSize.Height);
CanHorizontallyScroll ? double.PositiveInfinity : availableSize.Width - Padding.Left - Padding.Right,
CanVerticallyScroll ? double.PositiveInfinity : availableSize.Height - Padding.Top - Padding.Bottom);
Child.Measure(constraint);

38
tests/Avalonia.Controls.UnitTests/Presenters/ScrollContentPresenterTests.cs

@ -85,7 +85,7 @@ namespace Avalonia.Controls.UnitTests.Presenters
target.Measure(new Size(100, 100));
target.Arrange(new Rect(0, 0, 100, 100));
Assert.Equal(new Size(100, 100), target.DesiredSize);
Assert.Equal(new Size(80, 80), target.DesiredSize);
}
[Fact]
@ -149,6 +149,42 @@ namespace Avalonia.Controls.UnitTests.Presenters
Assert.Equal(new Size(100, double.PositiveInfinity), child.AvailableSize);
}
[Fact]
public void Measure_Should_Honor_Horizontal_Padding_If_CannotScrollHorizontally()
{
var child = new TestControl();
var target = new ScrollContentPresenter
{
CanHorizontallyScroll = false,
CanVerticallyScroll = true,
Padding = new Thickness(10, 0, 15, 0),
Content = child,
};
target.UpdateChild();
target.Measure(new Size(100, 100));
Assert.Equal(new Size(75, double.PositiveInfinity), child.AvailableSize);
}
[Fact]
public void Measure_Should_Honor_Vertical_Padding_If_CannotScrollVertically()
{
var child = new TestControl();
var target = new ScrollContentPresenter
{
CanHorizontallyScroll = true,
CanVerticallyScroll = false,
Padding = new Thickness(0, 10, 0, 15),
Content = child,
};
target.UpdateChild();
target.Measure(new Size(100, 100));
Assert.Equal(new Size(double.PositiveInfinity, 75), child.AvailableSize);
}
[Fact]
public void Measure_Should_Pass_Unbounded_X_If_CanScrollHorizontally()
{

Loading…
Cancel
Save