Browse Source

Revert "Fix selection after deleting an item."

Steven Kirk 5 years ago
parent
commit
41831066c2

+ 1 - 7
samples/ControlCatalog/Pages/ListBoxPage.xaml

@@ -10,13 +10,7 @@
               HorizontalAlignment="Center"
               Spacing="16">
       <StackPanel Orientation="Vertical" Spacing="8">
-        <ListBox Items="{Binding Items}"
-                 SelectedItem="{Binding SelectedItem}"
-                 SelectedItems="{Binding SelectedItems}"
-                 AutoScrollToSelectedItem="True"
-                 SelectionMode="{Binding SelectionMode}"
-                 Width="250"
-                 Height="350"/>
+        <ListBox Items="{Binding Items}" SelectedItem="{Binding SelectedItem}" AutoScrollToSelectedItem="True"  SelectionMode="{Binding SelectionMode}" Width="250" Height="350"></ListBox>
 
         <Button Command="{Binding AddItemCommand}">Add</Button>
 

+ 2 - 9
src/Avalonia.Controls/ItemsControl.cs

@@ -70,6 +70,7 @@ namespace Avalonia.Controls
         public ItemsControl()
         {
             PseudoClasses.Add(":empty");
+            SubscribeToItems(_items);
         }
 
         /// <summary>
@@ -264,11 +265,6 @@ namespace Avalonia.Controls
         {
         }
 
-        protected override void OnInitialized()
-        {
-            SubscribeToItems(_items);
-        }
-
         /// <summary>
         /// Handles directional navigation within the <see cref="ItemsControl"/>.
         /// </summary>
@@ -334,10 +330,7 @@ namespace Avalonia.Controls
                 Presenter.Items = newValue;
             }
 
-            if (IsInitialized)
-            {
-                SubscribeToItems(newValue);
-            }
+            SubscribeToItems(newValue);
         }
 
         /// <summary>

+ 0 - 3
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();
 

+ 0 - 4
tests/Avalonia.Controls.UnitTests/ItemsControlTests.cs

@@ -131,7 +131,6 @@ namespace Avalonia.Controls.UnitTests
             var child = new Control();
             var items = new AvaloniaList<Control>(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<string> { "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<string> { "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);
         }
 

+ 0 - 44
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<Item>
-            {
-                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();
 

+ 0 - 4
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 });