Fix :close on terminal panic
Executing :close on a terminal would panic due to it already having been removed. This is also related to the fact that removing a tab doesn't check for whether it actually found a tab to remove or not.
This commit is contained in:
parent
4541519225
commit
ee5b537d53
|
@ -26,6 +26,5 @@ func (_ Close) Execute(aerc *widgets.Aerc, args []string) error {
|
||||||
}
|
}
|
||||||
term, _ := aerc.SelectedTab().(*widgets.Terminal)
|
term, _ := aerc.SelectedTab().(*widgets.Terminal)
|
||||||
term.Close(nil)
|
term.Close(nil)
|
||||||
aerc.RemoveTab(term)
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -57,13 +57,18 @@ func (tabs *Tabs) invalidateChild(d Drawable) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (tabs *Tabs) Remove(content Drawable) {
|
func (tabs *Tabs) Remove(content Drawable) {
|
||||||
|
match := false
|
||||||
for i, tab := range tabs.Tabs {
|
for i, tab := range tabs.Tabs {
|
||||||
if tab.Content == content {
|
if tab.Content == content {
|
||||||
tabs.Tabs = append(tabs.Tabs[:i], tabs.Tabs[i+1:]...)
|
tabs.Tabs = append(tabs.Tabs[:i], tabs.Tabs[i+1:]...)
|
||||||
tabs.removeHistory(i)
|
tabs.removeHistory(i)
|
||||||
|
match = true
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if !match {
|
||||||
|
return
|
||||||
|
}
|
||||||
index, ok := tabs.popHistory()
|
index, ok := tabs.popHistory()
|
||||||
if ok {
|
if ok {
|
||||||
tabs.Select(index)
|
tabs.Select(index)
|
||||||
|
|
Loading…
Reference in New Issue