From bc32c061e8fe3229cd60ff4a1767e83389dd0667 Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Mon, 3 Apr 2023 10:06:50 +0200 Subject: [PATCH] Added tests to detect scroll jumps. --- .../VirtualizingStackPanel.cs | 10 ++ .../VirtualizingStackPanelTests.cs | 146 +++++++++++++++++- 2 files changed, 149 insertions(+), 7 deletions(-) diff --git a/src/Avalonia.Controls/VirtualizingStackPanel.cs b/src/Avalonia.Controls/VirtualizingStackPanel.cs index ad2ae9278c..7cca0986ad 100644 --- a/src/Avalonia.Controls/VirtualizingStackPanel.cs +++ b/src/Avalonia.Controls/VirtualizingStackPanel.cs @@ -130,6 +130,16 @@ namespace Avalonia.Controls set { SetValue(AreVerticalSnapPointsRegularProperty, value); } } + /// + /// Gets the index of the first realized element, or -1 if no elements are realized. + /// + public int FirstRealizedIndex => _realizedElements?.FirstIndex ?? -1; + + /// + /// Gets the index of the last realized element, or -1 if no elements are realized. + /// + public int LastRealizedIndex => _realizedElements?.LastIndex ?? -1; + protected override Size MeasureOverride(Size availableSize) { if (!IsEffectivelyVisible) diff --git a/tests/Avalonia.Controls.UnitTests/VirtualizingStackPanelTests.cs b/tests/Avalonia.Controls.UnitTests/VirtualizingStackPanelTests.cs index 76fc31c50d..2cdd4eaf95 100644 --- a/tests/Avalonia.Controls.UnitTests/VirtualizingStackPanelTests.cs +++ b/tests/Avalonia.Controls.UnitTests/VirtualizingStackPanelTests.cs @@ -37,7 +37,7 @@ namespace Avalonia.Controls.UnitTests { using var app = App(); var items = Enumerable.Range(0, 100).Select(x => new Button { Width = 25, Height = 10}); - var (target, scroll, itemsControl) = CreateTarget(items: items, useItemTemplate: false); + var (target, scroll, itemsControl) = CreateTarget(items: items, itemTemplate: null); Assert.Equal(1000, scroll.Extent.Height); @@ -252,7 +252,7 @@ namespace Avalonia.Controls.UnitTests { using var app = App(); var items = new ObservableCollection