private void TabClose(int tabIndex)
{
if (tabIndex == this.currentTabIndex)
{
// Switch to an existing tab
// We know i < tab.Count - check if we are the last tab before switching to a tab after us.
// if we are the last tab switch to a tab before us.
if (tabIndex == (tab.Count - 1))
{
this.currentTabIndex = tabIndex - 1;
if (this.currentTabIndex >= 0)
{
tab[this.currentTabIndex].Title.Opacity = 1.0;
tab[this.currentTabIndex].TextEditor.Visibility = Visibility.Visible;
tab[this.currentTabIndex].TextEditor.Focus();
}
}
else
{
// After deletion all indexes after i shift.
this.currentTabIndex = tabIndex;
tab[this.currentTabIndex + 1].Title.Opacity = 1.0;
tab[this.currentTabIndex + 1].TextEditor.Visibility = Visibility.Visible;
tab[this.currentTabIndex + 1].TextEditor.Focus();
}
}
else
{
// The indexes shifted, since a tab was deleted.
if (this.currentTabIndex > tabIndex)
{
this.currentTabIndex--;
}
}
// Clear find on page
this.currentSearchIndex = 0;
// Delete current tab
TabBar.Children.Remove(tab[tabIndex].Title);
Editor.Children.Remove(tab[tabIndex].TextEditor);
tab[tabIndex].Close();
tab.RemoveAt(tabIndex);
}