Fix tabs rendering glitch due to async load
This commit is contained in:
parent
1ab4474012
commit
7b56c24a44
2 changed files with 27 additions and 41 deletions
|
|
@ -344,6 +344,8 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
|||
}
|
||||
|
||||
hardwareTab.Visible = activePrinter?.Settings.PrinterSelected ?? false;
|
||||
|
||||
tabControl.RefreshTabPointers();
|
||||
}, ref unregisterEvents);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -278,52 +278,36 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
|||
|
||||
if (tabWidget is ChromeTab newTab)
|
||||
{
|
||||
ChromeTab leftTab;
|
||||
|
||||
if (tabIndex == -1)
|
||||
{
|
||||
leftTab = AllTabs.OfType<ChromeTab>().LastOrDefault();
|
||||
}
|
||||
else
|
||||
{
|
||||
if (tabIndex == 0)
|
||||
{
|
||||
leftTab = null;
|
||||
var firstTab = AllTabs.OfType<ChromeTab>().FirstOrDefault();
|
||||
|
||||
newTab.NextTab = firstTab;
|
||||
firstTab.PreviousTab = newTab;
|
||||
}
|
||||
else
|
||||
{
|
||||
leftTab = this.AllTabs.Skip(tabIndex - 1).FirstOrDefault() as ChromeTab;
|
||||
|
||||
var rightTab = leftTab?.NextTab;
|
||||
if (rightTab != null)
|
||||
{
|
||||
// Insert us in the middle
|
||||
rightTab.PreviousTab = newTab;
|
||||
|
||||
// Set Next
|
||||
newTab.NextTab = rightTab;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Set previous
|
||||
newTab.PreviousTab = leftTab;
|
||||
|
||||
// Insert us as next
|
||||
if (leftTab != null)
|
||||
{
|
||||
leftTab.NextTab = newTab;
|
||||
}
|
||||
|
||||
newTab.TabContent.Visible = false;
|
||||
|
||||
// Call AddTab(widget, int) in base explicitly
|
||||
base.AddTab(tabWidget, widgetPosition - firstTabPosition, widgetPosition);
|
||||
|
||||
// Listen for tab changes and update links
|
||||
/*
|
||||
newTab.VisibleChanged += (s, e) =>
|
||||
{
|
||||
this.RefreshTabPointers();
|
||||
}; */
|
||||
|
||||
this.RefreshTabPointers();
|
||||
}
|
||||
}
|
||||
|
||||
public void RefreshTabPointers()
|
||||
{
|
||||
ChromeTab lastTab = null;
|
||||
|
||||
foreach(var tab in AllTabs.OfType<ChromeTab>().Where(t => t.Visible))
|
||||
{
|
||||
if (lastTab != null)
|
||||
{
|
||||
lastTab.NextTab = tab;
|
||||
}
|
||||
|
||||
tab.PreviousTab = lastTab;
|
||||
|
||||
lastTab = tab;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue