From fceb9b1ba549467b77c04cbde413696e767e63d5 Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Sat, 9 May 2015 14:13:58 +0200 Subject: [PATCH] Fix ScrollContentPresenter measure/arrange. --- .../Presenters/ScrollContentPresenter.cs | 5 ++++- .../Perspex.Controls.UnitTests.csproj | 2 +- .../ScrollContentPresenterTests.cs | 18 +++++++++++------- 3 files changed, 16 insertions(+), 9 deletions(-) rename Tests/Perspex.Controls.UnitTests/{ => Presenters}/ScrollContentPresenterTests.cs (94%) diff --git a/Perspex.Controls/Presenters/ScrollContentPresenter.cs b/Perspex.Controls/Presenters/ScrollContentPresenter.cs index e92f5f846b..c79ba3f753 100644 --- a/Perspex.Controls/Presenters/ScrollContentPresenter.cs +++ b/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; } diff --git a/Tests/Perspex.Controls.UnitTests/Perspex.Controls.UnitTests.csproj b/Tests/Perspex.Controls.UnitTests/Perspex.Controls.UnitTests.csproj index 27a2f7e59f..6e5388ae84 100644 --- a/Tests/Perspex.Controls.UnitTests/Perspex.Controls.UnitTests.csproj +++ b/Tests/Perspex.Controls.UnitTests/Perspex.Controls.UnitTests.csproj @@ -92,7 +92,7 @@ - + diff --git a/Tests/Perspex.Controls.UnitTests/ScrollContentPresenterTests.cs b/Tests/Perspex.Controls.UnitTests/Presenters/ScrollContentPresenterTests.cs similarity index 94% rename from Tests/Perspex.Controls.UnitTests/ScrollContentPresenterTests.cs rename to Tests/Perspex.Controls.UnitTests/Presenters/ScrollContentPresenterTests.cs index b0822ba872..5bc702fc10 100644 --- a/Tests/Perspex.Controls.UnitTests/ScrollContentPresenterTests.cs +++ b/Tests/Perspex.Controls.UnitTests/Presenters/ScrollContentPresenterTests.cs @@ -4,7 +4,7 @@ // // ----------------------------------------------------------------------- -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); + } + } } } \ No newline at end of file