From ee55b4fa3dab06c4e8dcae4f46866d99d4ecb466 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Thu, 19 Jul 2018 12:51:48 +0100 Subject: [PATCH] bug is in selecting items control. add failing unit test. --- .../Presenters/CarouselPresenter.cs | 5 ---- .../Primitives/SelectingItemsControlTests.cs | 28 +++++++++++++++++++ 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/src/Avalonia.Controls/Presenters/CarouselPresenter.cs b/src/Avalonia.Controls/Presenters/CarouselPresenter.cs index 7591117dca..f77f249c46 100644 --- a/src/Avalonia.Controls/Presenters/CarouselPresenter.cs +++ b/src/Avalonia.Controls/Presenters/CarouselPresenter.cs @@ -115,11 +115,6 @@ namespace Avalonia.Controls.Presenters var containers = generator.RemoveRange(e.OldStartingIndex, e.OldItems.Count); Panel.Children.RemoveAll(containers.Select(x => x.ContainerControl)); - if(SelectedIndex >= Items.Count()) - { - SelectedIndex = Items.Count() - 1; - } - #pragma warning disable 4014 MoveToPage(-1, SelectedIndex); #pragma warning restore 4014 diff --git a/tests/Avalonia.Controls.UnitTests/Primitives/SelectingItemsControlTests.cs b/tests/Avalonia.Controls.UnitTests/Primitives/SelectingItemsControlTests.cs index c052b81309..c7a3465ac4 100644 --- a/tests/Avalonia.Controls.UnitTests/Primitives/SelectingItemsControlTests.cs +++ b/tests/Avalonia.Controls.UnitTests/Primitives/SelectingItemsControlTests.cs @@ -149,6 +149,34 @@ namespace Avalonia.Controls.UnitTests.Primitives Assert.Equal(1, target.SelectedIndex); } + [Fact] + public void SelectedIndex_Item_Is_Updated_As_Items_Removed_When_Last_Item_Is_Selected() + { + var items = new ObservableCollection + { + "Foo", + "Bar", + "FooBar" + }; + + var target = new SelectingItemsControl + { + Items = items, + Template = Template(), + }; + + target.ApplyTemplate(); + target.SelectedItem = items[2]; + + Assert.Equal(items[2], target.SelectedItem); + Assert.Equal(2, target.SelectedIndex); + + items.RemoveAt(0); + + Assert.Equal(items[1], target.SelectedItem); + Assert.Equal(1, target.SelectedIndex); + } + [Fact] public void Setting_SelectedItem_To_Not_Present_Item_Should_Clear_Selection() {