From 1c88b3bd85d582b8883fa63b536620e3e8bcad4c Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Thu, 21 Jul 2016 14:40:51 -0600 Subject: [PATCH] Fix scrolling to item when size == 0,0 When virtualized presenter size == 0,0 no containers will be materialized so no container will be found. Fixes #591. --- .../Presenters/ItemVirtualizerSimple.cs | 2 +- ...ItemsPresenterTests_Virtualization_Simple.cs | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/Avalonia.Controls/Presenters/ItemVirtualizerSimple.cs b/src/Avalonia.Controls/Presenters/ItemVirtualizerSimple.cs index bea9cb8a1a..00d896925a 100644 --- a/src/Avalonia.Controls/Presenters/ItemVirtualizerSimple.cs +++ b/src/Avalonia.Controls/Presenters/ItemVirtualizerSimple.cs @@ -475,7 +475,7 @@ namespace Avalonia.Controls.Presenters // is only partially visible due to differing item sizes. If the container is only // partially visible, scroll again. Don't do this if there's no layout manager: // it means we're running a unit test. - if (layoutManager != null) + if (container != null && layoutManager != null) { layoutManager.ExecuteLayoutPass(); diff --git a/tests/Avalonia.Controls.UnitTests/Presenters/ItemsPresenterTests_Virtualization_Simple.cs b/tests/Avalonia.Controls.UnitTests/Presenters/ItemsPresenterTests_Virtualization_Simple.cs index 264c2b2e89..3ab5a928b4 100644 --- a/tests/Avalonia.Controls.UnitTests/Presenters/ItemsPresenterTests_Virtualization_Simple.cs +++ b/tests/Avalonia.Controls.UnitTests/Presenters/ItemsPresenterTests_Virtualization_Simple.cs @@ -505,6 +505,23 @@ namespace Avalonia.Controls.UnitTests.Presenters Assert.Equal(0, ((IVirtualizingPanel)target.Panel).PixelOffset); } + [Fact] + public void Scrolling_To_Item_In_Zero_Sized_Presenter_Doesnt_Throw() + { + using (UnitTestApplication.Start(TestServices.RealLayoutManager)) + { + var target = CreateTarget(itemCount: 10); + var items = (IList)target.Items; + + target.ApplyTemplate(); + target.Measure(Size.Empty); + target.Arrange(Rect.Empty); + + // Check for issue #591: this should not throw. + target.ScrollIntoView(items[0]); + } + } + public class Vertical { [Fact]