aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/ui/tab.go22
1 files changed, 14 insertions, 8 deletions
diff --git a/lib/ui/tab.go b/lib/ui/tab.go
index ef9fcd8..27fb604 100644
--- a/lib/ui/tab.go
+++ b/lib/ui/tab.go
@@ -62,25 +62,31 @@ func (tabs *Tabs) invalidateChild(d Drawable) {
}
func (tabs *Tabs) Remove(content Drawable) {
- match := false
+ indexToRemove := -1
for i, tab := range tabs.Tabs {
if tab.Content == content {
tabs.Tabs = append(tabs.Tabs[:i], tabs.Tabs[i+1:]...)
tabs.removeHistory(i)
- match = true
+ indexToRemove = i
break
}
}
- if !match {
+ if indexToRemove < 0 {
return
}
- index, ok := tabs.popHistory()
- if ok {
- tabs.Select(index)
- interactive, ok := tabs.Tabs[tabs.Selected].Content.(Interactive)
+ // only pop the tab history if the closing tab is selected
+ if indexToRemove == tabs.Selected {
+ index, ok := tabs.popHistory()
if ok {
- interactive.Focus(true)
+ tabs.Select(index)
+ interactive, ok := tabs.Tabs[tabs.Selected].Content.(Interactive)
+ if ok {
+ interactive.Focus(true)
+ }
}
+ } else if indexToRemove < tabs.Selected {
+ // selected tab is now one to the left of where it was
+ tabs.Selected--
}
tabs.TabStrip.Invalidate()
}