From 41831066c202a24331bde2acbe7740caa953e868 Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Thu, 16 Jul 2020 10:30:41 +0200 Subject: [PATCH] Revert "Fix selection after deleting an item." --- samples/ControlCatalog/Pages/ListBoxPage.xaml | 8 +--- src/Avalonia.Controls/ItemsControl.cs | 11 +---- .../CarouselTests.cs | 3 -- .../ItemsControlTests.cs | 4 -- .../Primitives/SelectingItemsControlTests.cs | 44 ------------------- .../SelectingItemsControlTests_Multiple.cs | 4 -- 6 files changed, 3 insertions(+), 71 deletions(-) diff --git a/samples/ControlCatalog/Pages/ListBoxPage.xaml b/samples/ControlCatalog/Pages/ListBoxPage.xaml index f4d81418ac..47b4ce7151 100644 --- a/samples/ControlCatalog/Pages/ListBoxPage.xaml +++ b/samples/ControlCatalog/Pages/ListBoxPage.xaml @@ -10,13 +10,7 @@ HorizontalAlignment="Center" Spacing="16"> - + diff --git a/src/Avalonia.Controls/ItemsControl.cs b/src/Avalonia.Controls/ItemsControl.cs index da9f619932..6e0ad66699 100644 --- a/src/Avalonia.Controls/ItemsControl.cs +++ b/src/Avalonia.Controls/ItemsControl.cs @@ -70,6 +70,7 @@ namespace Avalonia.Controls public ItemsControl() { PseudoClasses.Add(":empty"); + SubscribeToItems(_items); } /// @@ -264,11 +265,6 @@ namespace Avalonia.Controls { } - protected override void OnInitialized() - { - SubscribeToItems(_items); - } - /// /// Handles directional navigation within the . /// @@ -334,10 +330,7 @@ namespace Avalonia.Controls Presenter.Items = newValue; } - if (IsInitialized) - { - SubscribeToItems(newValue); - } + SubscribeToItems(newValue); } /// diff --git a/tests/Avalonia.Controls.UnitTests/CarouselTests.cs b/tests/Avalonia.Controls.UnitTests/CarouselTests.cs index c6ca0fb2bf..a292910fae 100644 --- a/tests/Avalonia.Controls.UnitTests/CarouselTests.cs +++ b/tests/Avalonia.Controls.UnitTests/CarouselTests.cs @@ -4,7 +4,6 @@ using Avalonia.Controls.Presenters; using Avalonia.Controls.Primitives; using Avalonia.Controls.Templates; using Avalonia.LogicalTree; -using Avalonia.UnitTests; using Avalonia.VisualTree; using Xunit; @@ -156,7 +155,6 @@ namespace Avalonia.Controls.UnitTests IsVirtualized = false }; - var root = new TestRoot(target); target.ApplyTemplate(); target.Presenter.ApplyTemplate(); @@ -249,7 +247,6 @@ namespace Avalonia.Controls.UnitTests IsVirtualized = false }; - var root = new TestRoot(target); target.ApplyTemplate(); target.Presenter.ApplyTemplate(); diff --git a/tests/Avalonia.Controls.UnitTests/ItemsControlTests.cs b/tests/Avalonia.Controls.UnitTests/ItemsControlTests.cs index faaa3ed063..684486cbae 100644 --- a/tests/Avalonia.Controls.UnitTests/ItemsControlTests.cs +++ b/tests/Avalonia.Controls.UnitTests/ItemsControlTests.cs @@ -131,7 +131,6 @@ namespace Avalonia.Controls.UnitTests var child = new Control(); var items = new AvaloniaList(child); - var root = new TestRoot(target); target.Template = GetTemplate(); target.Items = items; items.RemoveAt(0); @@ -284,7 +283,6 @@ namespace Avalonia.Controls.UnitTests var items = new AvaloniaList { "Foo" }; var called = false; - var root = new TestRoot(target); target.Template = GetTemplate(); target.Items = items; target.ApplyTemplate(); @@ -305,7 +303,6 @@ namespace Avalonia.Controls.UnitTests var items = new AvaloniaList { "Foo", "Bar" }; var called = false; - var root = new TestRoot(target); target.Template = GetTemplate(); target.Items = items; target.ApplyTemplate(); @@ -379,7 +376,6 @@ namespace Avalonia.Controls.UnitTests Items = new[] { 1, 2, 3 }, }; - var root = new TestRoot(target); Assert.DoesNotContain(":empty", target.Classes); } diff --git a/tests/Avalonia.Controls.UnitTests/Primitives/SelectingItemsControlTests.cs b/tests/Avalonia.Controls.UnitTests/Primitives/SelectingItemsControlTests.cs index e43e855ae0..fe9c7b1261 100644 --- a/tests/Avalonia.Controls.UnitTests/Primitives/SelectingItemsControlTests.cs +++ b/tests/Avalonia.Controls.UnitTests/Primitives/SelectingItemsControlTests.cs @@ -170,8 +170,6 @@ namespace Avalonia.Controls.UnitTests.Primitives SelectionMode = SelectionMode.Single | SelectionMode.AlwaysSelected }; - var root = new TestRoot(listBox); - listBox.BeginInit(); listBox.SelectedIndex = 1; @@ -482,7 +480,6 @@ namespace Avalonia.Controls.UnitTests.Primitives Template = Template(), }; - var root = new TestRoot(target); target.ApplyTemplate(); target.Presenter.ApplyTemplate(); items.Add(new Item { IsSelected = true }); @@ -534,7 +531,6 @@ namespace Avalonia.Controls.UnitTests.Primitives }; target.ApplyTemplate(); - target.Presenter.ApplyTemplate(); target.SelectedIndex = 1; Assert.Equal(items[1], target.SelectedItem); @@ -553,45 +549,6 @@ namespace Avalonia.Controls.UnitTests.Primitives Assert.NotNull(receivedArgs); Assert.Empty(receivedArgs.AddedItems); Assert.Equal(new[] { removed }, receivedArgs.RemovedItems); - Assert.False(items.Single().IsSelected); - } - - [Fact] - public void Removing_Selected_Item_Should_Clear_Selection_With_BeginInit() - { - var items = new AvaloniaList - { - new Item(), - new Item(), - }; - - var target = new SelectingItemsControl(); - target.BeginInit(); - target.Items = items; - target.Template = Template(); - target.EndInit(); - - target.ApplyTemplate(); - target.Presenter.ApplyTemplate(); - target.SelectedIndex = 0; - - Assert.Equal(items[0], target.SelectedItem); - Assert.Equal(0, target.SelectedIndex); - - SelectionChangedEventArgs receivedArgs = null; - - target.SelectionChanged += (_, args) => receivedArgs = args; - - var removed = items[0]; - - items.RemoveAt(0); - - Assert.Null(target.SelectedItem); - Assert.Equal(-1, target.SelectedIndex); - Assert.NotNull(receivedArgs); - Assert.Empty(receivedArgs.AddedItems); - Assert.Equal(new[] { removed }, receivedArgs.RemovedItems); - Assert.False(items.Single().IsSelected); } [Fact] @@ -922,7 +879,6 @@ namespace Avalonia.Controls.UnitTests.Primitives Items = items, }; - var root = new TestRoot(target); target.ApplyTemplate(); target.Presenter.ApplyTemplate(); diff --git a/tests/Avalonia.Controls.UnitTests/Primitives/SelectingItemsControlTests_Multiple.cs b/tests/Avalonia.Controls.UnitTests/Primitives/SelectingItemsControlTests_Multiple.cs index e9ec8d114f..dcf25beb50 100644 --- a/tests/Avalonia.Controls.UnitTests/Primitives/SelectingItemsControlTests_Multiple.cs +++ b/tests/Avalonia.Controls.UnitTests/Primitives/SelectingItemsControlTests_Multiple.cs @@ -1014,7 +1014,6 @@ namespace Avalonia.Controls.UnitTests.Primitives SelectionMode = SelectionMode.Multiple, }; - var root = new TestRoot(target); target.ApplyTemplate(); target.Presenter.ApplyTemplate(); @@ -1044,7 +1043,6 @@ namespace Avalonia.Controls.UnitTests.Primitives SelectionMode = SelectionMode.Multiple, }; - var root = new TestRoot(target); target.ApplyTemplate(); target.Presenter.ApplyTemplate(); @@ -1078,7 +1076,6 @@ namespace Avalonia.Controls.UnitTests.Primitives SelectionMode = SelectionMode.Multiple, }; - var root = new TestRoot(target); target.ApplyTemplate(); target.Presenter.ApplyTemplate(); @@ -1202,7 +1199,6 @@ namespace Avalonia.Controls.UnitTests.Primitives Template = Template(), }; - var root = new TestRoot(target); target.ApplyTemplate(); target.Presenter.ApplyTemplate(); items.Add(new ItemContainer { IsSelected = true });