diff options
author | Jeffas <dev@jeffas.io> | 2019-07-19 18:12:57 +0100 |
---|---|---|
committer | Drew DeVault <sir@cmpwn.com> | 2019-07-23 10:27:59 -0400 |
commit | e42b95a617399b2736df96ae6469309e6b306d71 (patch) | |
tree | 65bd6f78faa0607a3d73a35b7c59a713472adbea /lib/ui/tab.go | |
parent | d526786c9358bc92a5ffc3233e0ba4491aff07ba (diff) | |
download | aerc-e42b95a617399b2736df96ae6469309e6b306d71.tar.gz |
Add change tab command
This command allows the user to change tab by giving the tab name. This can be tab completed too. The previous tab is stored in the tabs module so that when a new tab is created it is still possible to go to the previous one. Normal invocation is :ct folder Previous tab is :ct -
Diffstat (limited to 'lib/ui/tab.go')
-rw-r--r-- | lib/ui/tab.go | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/lib/ui/tab.go b/lib/ui/tab.go index 0061472..7808db4 100644 --- a/lib/ui/tab.go +++ b/lib/ui/tab.go @@ -29,7 +29,7 @@ func NewTabs() *Tabs { tabs := &Tabs{} tabs.TabStrip = (*TabStrip)(tabs) tabs.TabContent = (*TabContent)(tabs) - tabs.history = []int{0} + tabs.history = []int{} return tabs } @@ -64,7 +64,10 @@ func (tabs *Tabs) Remove(content Drawable) { break } } - tabs.Select(tabs.popHistory()) + index, ok := tabs.popHistory() + if ok { + tabs.Select(index) + } tabs.TabStrip.Invalidate() } @@ -90,22 +93,34 @@ func (tabs *Tabs) Select(index int) { } if tabs.Selected != index { + tabs.pushHistory(tabs.Selected) tabs.Selected = index - tabs.pushHistory(index) tabs.TabStrip.Invalidate() tabs.TabContent.Invalidate() } } +func (tabs *Tabs) SelectPrevious() bool { + index, ok := tabs.popHistory() + if !ok { + return false + } + tabs.Select(index) + return true +} + func (tabs *Tabs) pushHistory(index int) { tabs.history = append(tabs.history, index) } -func (tabs *Tabs) popHistory() int { +func (tabs *Tabs) popHistory() (int, bool) { lastIdx := len(tabs.history) - 1 + if lastIdx < 0 { + return 0, false + } item := tabs.history[lastIdx] tabs.history = tabs.history[:lastIdx] - return item + return item, true } func (tabs *Tabs) removeHistory(index int) { |