From 09d4f61db2dfb72bcef243b0fa979c30d8dbab94 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Wed, 20 Apr 2016 18:13:33 +0100 Subject: [PATCH] fixed remove range, not taking into account if a container yet existed or not. --- .../Generators/ItemContainerGenerator.cs | 12 +++++++++--- src/Perspex.Controls/Presenters/CarouselPresenter.cs | 1 + 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/Perspex.Controls/Generators/ItemContainerGenerator.cs b/src/Perspex.Controls/Generators/ItemContainerGenerator.cs index a162ce08de..c945d7b5bf 100644 --- a/src/Perspex.Controls/Generators/ItemContainerGenerator.cs +++ b/src/Perspex.Controls/Generators/ItemContainerGenerator.cs @@ -94,9 +94,15 @@ namespace Perspex.Controls.Generators /// public virtual IEnumerable RemoveRange(int startingIndex, int count) { - var result = _containers.GetRange(startingIndex, count); - _containers.RemoveRange(startingIndex, count); - Dematerialized?.Invoke(this, new ItemContainerEventArgs(startingIndex, result)); + List result = new List(); + + if (startingIndex < _containers.Count) + { + result.AddRange(_containers.GetRange(startingIndex, count)); + _containers.RemoveRange(startingIndex, count); + Dematerialized?.Invoke(this, new ItemContainerEventArgs(startingIndex, result)); + } + return result; } diff --git a/src/Perspex.Controls/Presenters/CarouselPresenter.cs b/src/Perspex.Controls/Presenters/CarouselPresenter.cs index d8932b1e78..6776c3a3bc 100644 --- a/src/Perspex.Controls/Presenters/CarouselPresenter.cs +++ b/src/Perspex.Controls/Presenters/CarouselPresenter.cs @@ -115,6 +115,7 @@ namespace Perspex.Controls.Presenters Panel.Children.RemoveAll(containers.Select(x => x.ContainerControl)); } break; + } }