var tabBarOffset int
+// A Tab holds an array of views and a splitTree to determine how the
+// views should be arranged
type Tab struct {
// This contains all the views in this tab
// There is generally only one view per tab, but you can have
// multiple views with splits
- views []*View
+ Views []*View
// This is the current view for this tab
CurView int
// NewTabFromView creates a new tab and puts the given view in the tab
func NewTabFromView(v *View) *Tab {
t := new(Tab)
- t.views = append(t.views, v)
- t.views[0].Num = 0
+ t.Views = append(t.Views, v)
+ t.Views[0].Num = 0
t.tree = new(SplitTree)
t.tree.kind = VerticalSplit
- t.tree.children = []Node{NewLeafNode(t.views[0], t.tree)}
+ t.tree.children = []Node{NewLeafNode(t.Views[0], t.tree)}
w, h := screen.Size()
t.tree.width = w
if globalSettings["infobar"].(bool) {
t.tree.height--
}
+ if globalSettings["keymenu"].(bool) {
+ t.tree.height -= 2
+ }
t.Resize()
// SetNum sets all this tab's views to have the correct tab number
func (t *Tab) SetNum(num int) {
t.tree.tabNum = num
- for _, v := range t.views {
+ for _, v := range t.Views {
v.TabNum = num
}
}
+// Cleanup cleans up the tree (for example if views have closed)
func (t *Tab) Cleanup() {
t.tree.Cleanup()
}
+// Resize handles a resize event from the terminal and resizes
+// all child views correctly
func (t *Tab) Resize() {
w, h := screen.Size()
t.tree.width = w
if globalSettings["infobar"].(bool) {
t.tree.height--
}
+ if globalSettings["keymenu"].(bool) {
+ t.tree.height -= 2
+ }
t.tree.ResizeSplits()
- for i, v := range t.views {
+ for i, v := range t.Views {
v.Num = i
+ if v.Type == vtTerm {
+ v.term.Resize(v.Width, v.Height)
+ }
}
}
// CurView returns the current view
func CurView() *View {
curTab := tabs[curTab]
- return curTab.views[curTab.CurView]
+ return curTab.Views[curTab.CurView]
}
// TabbarString returns the string that should be displayed in the tabbar
} else {
str += " "
}
- str += t.views[t.CurView].Buf.GetName()
+ buf := t.Views[t.CurView].Buf
+ str += buf.GetName()
+ if buf.Modified() {
+ str += " +"
+ }
if i == curTab {
str += "]"
} else {
str += " "
}
- indicies[len(str)-1] = i + 1
+ indicies[Count(str)-1] = i + 1
str += " "
}
return str, indicies