Browse Source

Fix ScrollContentPresenter measure/arrange.

pull/58/head
Steven Kirk 12 years ago
parent
commit
fceb9b1ba5
  1. 5
      Perspex.Controls/Presenters/ScrollContentPresenter.cs
  2. 2
      Tests/Perspex.Controls.UnitTests/Perspex.Controls.UnitTests.csproj
  3. 18
      Tests/Perspex.Controls.UnitTests/Presenters/ScrollContentPresenterTests.cs

5
Perspex.Controls/Presenters/ScrollContentPresenter.cs

@ -95,7 +95,10 @@ namespace Perspex.Controls.Presenters
if (child != null)
{
child.Arrange(new Rect((Point)(-this.Offset), finalSize));
var size = new Size(
Math.Max(finalSize.Width, child.DesiredSize.Width),
Math.Max(finalSize.Height, child.DesiredSize.Height));
child.Arrange(new Rect((Point)(-this.Offset), size));
return finalSize;
}

2
Tests/Perspex.Controls.UnitTests/Perspex.Controls.UnitTests.csproj

@ -92,7 +92,7 @@
<Compile Include="BorderTests.cs" />
<Compile Include="DropDownTests.cs" />
<Compile Include="Presenters\ItemsPresenterTests.cs" />
<Compile Include="ScrollContentPresenterTests.cs" />
<Compile Include="Presenters\ScrollContentPresenterTests.cs" />
<Compile Include="ScrollViewerTests.cs" />
<Compile Include="Primitives\SelectingItemsControlTests.cs" />
<Compile Include="ListBoxTests.cs" />

18
Tests/Perspex.Controls.UnitTests/ScrollContentPresenterTests.cs → Tests/Perspex.Controls.UnitTests/Presenters/ScrollContentPresenterTests.cs

@ -4,7 +4,7 @@
// </copyright>
// -----------------------------------------------------------------------
namespace Perspex.Controls.UnitTests
namespace Perspex.Controls.UnitTests.Presenters
{
using System;
using System.Collections.Generic;
@ -113,14 +113,10 @@ namespace Perspex.Controls.UnitTests
[Fact]
public void Content_Can_Be_Larger_Than_Viewport()
{
Border content;
TestControl content;
var target = new ScrollContentPresenter
{
Content = (content = new Border
{
Width = 150,
Height = 150,
}),
Content = (content = new TestControl()),
};
target.Measure(new Size(100, 100));
@ -184,5 +180,13 @@ namespace Perspex.Controls.UnitTests
Assert.True(target.IsMeasureValid);
Assert.False(target.IsArrangeValid);
}
private class TestControl : Control
{
protected override Size MeasureOverride(Size availableSize)
{
return new Size(150, 150);
}
}
}
}
Loading…
Cancel
Save