diff --git a/Source/Editor/GUI/Tabs/Tab.cs b/Source/Editor/GUI/Tabs/Tab.cs
index 3968cc17d..85f805af0 100644
--- a/Source/Editor/GUI/Tabs/Tab.cs
+++ b/Source/Editor/GUI/Tabs/Tab.cs
@@ -13,6 +13,8 @@ namespace FlaxEditor.GUI.Tabs
[HideInEditor]
public class Tab : ContainerControl
{
+ internal Tabs _selectedInTabs;
+
///
/// Gets or sets the text.
///
@@ -86,5 +88,25 @@ namespace FlaxEditor.GUI.Tabs
{
return new Tabs.TabHeader((Tabs)Parent, this);
}
+
+ ///
+ protected override void OnParentChangedInternal()
+ {
+ if (_selectedInTabs != null)
+ _selectedInTabs.SelectedTab = null;
+
+ base.OnParentChangedInternal();
+ }
+
+ ///
+ public override void OnDestroy()
+ {
+ if (IsDisposing)
+ return;
+ if (_selectedInTabs != null)
+ _selectedInTabs.SelectedTab = null;
+
+ base.OnDestroy();
+ }
}
}
diff --git a/Source/Editor/GUI/Tabs/Tabs.cs b/Source/Editor/GUI/Tabs/Tabs.cs
index d830b9e0f..b5e2cfe39 100644
--- a/Source/Editor/GUI/Tabs/Tabs.cs
+++ b/Source/Editor/GUI/Tabs/Tabs.cs
@@ -263,7 +263,12 @@ namespace FlaxEditor.GUI.Tabs
// Check if index will change
if (_selectedIndex != index)
{
- SelectedTab?.OnDeselected();
+ var prev = SelectedTab;
+ if (prev != null)
+ {
+ prev._selectedInTabs = null;
+ prev.OnDeselected();
+ }
_selectedIndex = index;
PerformLayout();
OnSelectedTabChanged();
@@ -342,8 +347,13 @@ namespace FlaxEditor.GUI.Tabs
///
protected virtual void OnSelectedTabChanged()
{
+ var selectedTab = SelectedTab;
SelectedTabChanged?.Invoke(this);
- SelectedTab?.OnSelected();
+ if (selectedTab != null)
+ {
+ selectedTab._selectedInTabs = this;
+ selectedTab.OnSelected();
+ }
}
///