]> git.lizzy.rs Git - micro.git/blobdiff - cmd/micro/tab.go
Code optimisation (#1117)
[micro.git] / cmd / micro / tab.go
index 6917dfeb0d96e432858a96445c0d6e2f264ec873..0998779aee2887542186ea086e5a3f312566fe70 100644 (file)
@@ -8,11 +8,13 @@ import (
 
 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
 
@@ -22,12 +24,12 @@ type Tab struct {
 // 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
@@ -48,15 +50,18 @@ func NewTabFromView(v *View) *Tab {
 // 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
@@ -71,15 +76,18 @@ func (t *Tab) Resize() {
 
        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
@@ -95,7 +103,7 @@ func TabbarString() (string, map[int]int) {
                } else {
                        str += " "
                }
-               buf := t.views[t.CurView].Buf
+               buf := t.Views[t.CurView].Buf
                str += buf.GetName()
                if buf.Modified() {
                        str += " +"