Merge pull request #3072 from jlewin/design_tools
Update tab pointers on removal
This commit is contained in:
commit
d44515d12e
1 changed files with 33 additions and 2 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue