From 6626a2e2182ae09d33c2c495f8b07019b96468d5 Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Thu, 1 Dec 2022 10:33:44 +0100 Subject: [PATCH] Update TabControl on container index change. --- .../Presenters/PanelContainerGenerator.cs | 2 +- src/Avalonia.Controls/TabControl.cs | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/Avalonia.Controls/Presenters/PanelContainerGenerator.cs b/src/Avalonia.Controls/Presenters/PanelContainerGenerator.cs index 4a31017fbd..b080a9044f 100644 --- a/src/Avalonia.Controls/Presenters/PanelContainerGenerator.cs +++ b/src/Avalonia.Controls/Presenters/PanelContainerGenerator.cs @@ -96,7 +96,7 @@ namespace Avalonia.Controls.Presenters var childCount = children.Count; for (var i = index; i < childCount; ++i) - generator.ItemContainerIndexChanged(children[i], i - count, i); + generator.ItemContainerIndexChanged(children[i], i + count, i); } switch (e.Action) diff --git a/src/Avalonia.Controls/TabControl.cs b/src/Avalonia.Controls/TabControl.cs index 970d7de727..d08e0a61da 100644 --- a/src/Avalonia.Controls/TabControl.cs +++ b/src/Avalonia.Controls/TabControl.cs @@ -174,6 +174,16 @@ namespace Avalonia.Controls UpdateSelectedContent(); } + protected override void ContainerIndexChangedOverride(Control container, int oldIndex, int newIndex) + { + base.ContainerIndexChangedOverride(container, oldIndex, newIndex); + + var selectedIndex = SelectedIndex; + + if (selectedIndex == oldIndex || selectedIndex == newIndex) + UpdateSelectedContent(); + } + protected internal override void ClearContainerForItemOverride(Control element) { base.ClearContainerForItemOverride(element);