diff options
| author | Kevin Kuehler <kkuehler@brave.com> | 2019-06-10 22:05:56 -0700 | 
|---|---|---|
| committer | Drew DeVault <sir@cmpwn.com> | 2019-06-11 09:34:45 -0400 | 
| commit | a54f4adb8f28855e7a8e5f24072f4d969b3b674d (patch) | |
| tree | d93d13caac01d4b5a90e9742b947fa590b3d2fbd | |
| parent | 32f970e0531a0811392d2836773870acf649cf26 (diff) | |
lib/ui/tab: Add Replace method
Also expose a light wrapper method in aerc.go for tab replacement
Signed-off-by: Kevin Kuehler <kkuehler@brave.com>
| -rw-r--r-- | lib/ui/tab.go | 16 | ||||
| -rw-r--r-- | widgets/aerc.go | 4 | 
2 files changed, 20 insertions, 0 deletions
| diff --git a/lib/ui/tab.go b/lib/ui/tab.go index ed96ec4..61d544a 100644 --- a/lib/ui/tab.go +++ b/lib/ui/tab.go @@ -68,6 +68,22 @@ func (tabs *Tabs) Remove(content Drawable) {  	tabs.TabStrip.Invalidate()  } +func (tabs *Tabs) Replace(contentSrc Drawable, contentTarget Drawable, name string) { +	replaceTab := &Tab{ +		Content: contentTarget, +		Name:    name, +	} +	for i, tab := range tabs.Tabs { +		if tab.Content == contentSrc { +			tabs.Tabs[i] = replaceTab +			tabs.Select(i) +			break +		} +	} +	tabs.TabStrip.Invalidate() +	contentTarget.OnInvalidate(tabs.invalidateChild) +} +  func (tabs *Tabs) Select(index int) {  	if index >= len(tabs.Tabs) {  		panic("Tried to set tab index to a non-existing element") diff --git a/widgets/aerc.go b/widgets/aerc.go index 5b1b151..ae8319b 100644 --- a/widgets/aerc.go +++ b/widgets/aerc.go @@ -218,6 +218,10 @@ func (aerc *Aerc) RemoveTab(tab ui.Drawable) {  	aerc.tabs.Remove(tab)  } +func (aerc *Aerc) ReplaceTab(tabSrc ui.Drawable, tabTarget ui.Drawable, name string) { +	aerc.tabs.Replace(tabSrc, tabTarget, name) +} +  func (aerc *Aerc) NextTab() {  	next := aerc.tabs.Selected + 1  	if next >= len(aerc.tabs.Tabs) { | 
