From d7a757385a0e8c76ad4223c9204499645629977a Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Sat, 11 Jun 2016 20:15:53 +0200 Subject: [PATCH] Fix failing tests. --- .../Presenters/ItemVirtualizerSimple.cs | 15 ++++++++++----- .../ItemsPresenterTests_Virtualization_Simple.cs | 1 + 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/Avalonia.Controls/Presenters/ItemVirtualizerSimple.cs b/src/Avalonia.Controls/Presenters/ItemVirtualizerSimple.cs index f9b383a928..e06b1749db 100644 --- a/src/Avalonia.Controls/Presenters/ItemVirtualizerSimple.cs +++ b/src/Avalonia.Controls/Presenters/ItemVirtualizerSimple.cs @@ -212,15 +212,20 @@ namespace Avalonia.Controls.Presenters } var container = generator.ContainerFromIndex(newItemIndex); + var layoutManager = LayoutManager.Instance; // We need to do a layout here because it's possible that the container we moved to // is only partially visible due to differing item sizes. If the container is only - // partially visible, scroll again. - LayoutManager.Instance?.ExecuteLayoutPass(); - - if (!new Rect(panel.Bounds.Size).Contains(container.Bounds)) + // 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) { - OffsetValue += newItemIndex > itemIndex ? 1 : -1; + layoutManager.ExecuteLayoutPass(); + + if (!new Rect(panel.Bounds.Size).Contains(container.Bounds)) + { + OffsetValue += newItemIndex > itemIndex ? 1 : -1; + } } return container; diff --git a/tests/Avalonia.Controls.UnitTests/Presenters/ItemsPresenterTests_Virtualization_Simple.cs b/tests/Avalonia.Controls.UnitTests/Presenters/ItemsPresenterTests_Virtualization_Simple.cs index 5e7daacf60..2afd3f4bc3 100644 --- a/tests/Avalonia.Controls.UnitTests/Presenters/ItemsPresenterTests_Virtualization_Simple.cs +++ b/tests/Avalonia.Controls.UnitTests/Presenters/ItemsPresenterTests_Virtualization_Simple.cs @@ -11,6 +11,7 @@ using Avalonia.Controls.Presenters; using Avalonia.Controls.Primitives; using Avalonia.Controls.Templates; using Avalonia.Input; +using Avalonia.UnitTests; using Xunit; namespace Avalonia.Controls.UnitTests.Presenters