Merge pull request #3072 from jlewin/design_tools

Update tab pointers on removal
This commit is contained in:
johnlewin 2018-03-14 07:49:52 -07:00 committed by GitHub
commit d44515d12e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -117,14 +117,23 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
}
}
internal void RemoveTab(ITab tab)
internal virtual void RemoveTab(ITab tab)
{
_allTabs.Remove(tab);
TabBar.ActionArea.RemoveChild(tab as GuiWidget);
this.TabContainer.RemoveChild(tab.TabContent);
ActiveTab = _allTabs.LastOrDefault();
if (tab is ChromeTab chromeTab)
{
// Activate next or last tab
ActiveTab = chromeTab.NextTab ?? _allTabs.LastOrDefault();
}
else
{
// Activate last tab
ActiveTab = _allTabs.LastOrDefault();
}
}
private ITab _activeTab;
@ -228,6 +237,28 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
}
}
internal override void RemoveTab(ITab tab)
{
base.RemoveTab(tab);
// Update pointers - collapse out removed tab
if (tab is ChromeTab removedTab)
{
var tabA = removedTab.PreviousTab;
var tabB = removedTab.NextTab;
if (tabA != null)
{
tabA.NextTab = tabB;
}
if (tabB != null)
{
tabB.PreviousTab = tabA;
}
}
}
private async void ChromeTab_CloseClicked(object sender, EventArgs e)
{
if (sender is ITab tab