From 55f05defd1208caa58d8fad4a7855a05f02c4dc2 Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Tue, 24 May 2016 23:01:13 +0200 Subject: [PATCH] Make scrolling up >= 1 page work --- .../Presenters/ItemVirtualizerSimple.cs | 4 ++-- .../Presenters/ItemsPresenterTests_Virtualization.cs | 10 ++++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/Avalonia.Controls/Presenters/ItemVirtualizerSimple.cs b/src/Avalonia.Controls/Presenters/ItemVirtualizerSimple.cs index d938153d3c..afbd501fc2 100644 --- a/src/Avalonia.Controls/Presenters/ItemVirtualizerSimple.cs +++ b/src/Avalonia.Controls/Presenters/ItemVirtualizerSimple.cs @@ -135,9 +135,9 @@ namespace Avalonia.Controls.Presenters var generator = Owner.ItemContainerGenerator; var selector = Owner.MemberSelector; var sign = delta < 0 ? -1 : 1; - var move = delta < panel.Children.Count; - var first = delta < 0 && move ? panel.Children.Count + delta : 0; var count = Math.Min(Math.Abs(delta), panel.Children.Count); + var move = count < panel.Children.Count; + var first = delta < 0 && move ? panel.Children.Count + delta : 0; var containers = panel.Children.GetRange(first, count).ToList(); for (var i = 0; i < containers.Count; ++i) diff --git a/tests/Avalonia.Controls.UnitTests/Presenters/ItemsPresenterTests_Virtualization.cs b/tests/Avalonia.Controls.UnitTests/Presenters/ItemsPresenterTests_Virtualization.cs index 66bf70efb4..a3fc24583c 100644 --- a/tests/Avalonia.Controls.UnitTests/Presenters/ItemsPresenterTests_Virtualization.cs +++ b/tests/Avalonia.Controls.UnitTests/Presenters/ItemsPresenterTests_Virtualization.cs @@ -248,6 +248,16 @@ namespace Avalonia.Controls.UnitTests.Presenters { Assert.Equal(items[i + 20], target.Panel.Children[i].DataContext); } + + scroller.Offset = new Vector(0, 0); + + Assert.Equal(new Vector(0, 0), ((ILogicalScrollable)target).Offset); + Assert.Equal(containers, target.Panel.Children); + + for (var i = 0; i < target.Panel.Children.Count; ++i) + { + Assert.Equal(items[i], target.Panel.Children[i].DataContext); + } } } }