From 18e0512d81cb22989bc6adde3b3465ac22eae0ec Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Wed, 14 Jun 2023 16:43:26 +0200 Subject: [PATCH 1/2] Added failing test for #11679. --- .../VirtualizingStackPanelTests.cs | 61 ++++++++++++++++++- 1 file changed, 58 insertions(+), 3 deletions(-) diff --git a/tests/Avalonia.Controls.UnitTests/VirtualizingStackPanelTests.cs b/tests/Avalonia.Controls.UnitTests/VirtualizingStackPanelTests.cs index 4be888f96d..ba4fb32067 100644 --- a/tests/Avalonia.Controls.UnitTests/VirtualizingStackPanelTests.cs +++ b/tests/Avalonia.Controls.UnitTests/VirtualizingStackPanelTests.cs @@ -367,6 +367,38 @@ namespace Avalonia.Controls.UnitTests Assert.False(originalFocused.IsVisible); } + [Fact] + public void Focused_Element_Losing_Focus_Does_Not_Reset_Selection() + { + using var app = App(); + var (target, scroll, listBox) = CreateTarget( + styles: new[] + { + new Style(x => x.OfType()) + { + Setters = + { + new Setter(ListBoxItem.TemplateProperty, ListBoxItemTemplate()), + } + } + }); + + listBox.SelectedIndex = 0; + + var selectedContainer = target.GetRealizedElements().First()!; + selectedContainer.Focusable = true; + selectedContainer.Focus(); + + scroll.Offset = new Vector(0, 500); + Layout(target); + + var newFocused = target.GetRealizedElements().First()!; + newFocused.Focusable = true; + newFocused.Focus(); + + Assert.Equal(0, listBox.SelectedIndex); + } + [Fact] public void Removing_Range_When_Scrolled_To_End_Updates_Viewport() { @@ -776,7 +808,19 @@ namespace Avalonia.Controls.UnitTests Optional itemTemplate = default, IEnumerable