From 9cf283e3123aa3f43196bfd1250a1c0d879f2673 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sat, 5 Jan 2019 19:41:40 -0500 Subject: [PATCH] Resizing work --- cmd/micro/action/command.go | 2 ++ cmd/micro/micro.go | 25 ++++++++++++++----------- cmd/micro/util/message.go | 3 +++ cmd/micro/views/splits.go | 24 +++++++++++++++--------- 4 files changed, 34 insertions(+), 20 deletions(-) diff --git a/cmd/micro/action/command.go b/cmd/micro/action/command.go index 96ea957e..664a9cee 100644 --- a/cmd/micro/action/command.go +++ b/cmd/micro/action/command.go @@ -1,6 +1,7 @@ package action import ( + "log" "os" "github.com/zyedidia/micro/cmd/micro/buffer" @@ -205,6 +206,7 @@ func VSplit(args []string) { return } + log.Println("loaded") MainTab.CurPane().vsplit(buf) } diff --git a/cmd/micro/micro.go b/cmd/micro/micro.go index 51349922..e711bec7 100644 --- a/cmd/micro/micro.go +++ b/cmd/micro/micro.go @@ -193,14 +193,14 @@ func main() { action.InitGlobals() // Here is the event loop which runs in a separate thread - go func() { - events = make(chan tcell.Event) - for { - screen.Lock() - events <- screen.Screen.PollEvent() - screen.Unlock() - } - }() + // go func() { + // events = make(chan tcell.Event) + // for { + // screen.Lock() + // events <- screen.Screen.PollEvent() + // screen.Unlock() + // } + // }() for { // Display everything @@ -216,9 +216,12 @@ func main() { var event tcell.Event // Check for new events - select { - case event = <-events: - } + screen.Lock() + event = screen.Screen.PollEvent() + screen.Unlock() + // select { + // case event = <-events: + // } if event != nil { if action.InfoBar.HasPrompt { diff --git a/cmd/micro/util/message.go b/cmd/micro/util/message.go index 2a1ddce1..3b31cd17 100644 --- a/cmd/micro/util/message.go +++ b/cmd/micro/util/message.go @@ -3,6 +3,7 @@ package util import ( "bufio" "fmt" + "log" "os" "strconv" @@ -16,7 +17,9 @@ import ( // This will write the message, and wait for the user // to press and key to continue func TermMessage(msg ...interface{}) { + log.Println(msg) screen.TempFini() + log.Println("fini") fmt.Println(msg...) fmt.Print("\nPress enter to continue") diff --git a/cmd/micro/views/splits.go b/cmd/micro/views/splits.go index 144437ba..3c1521a3 100644 --- a/cmd/micro/views/splits.go +++ b/cmd/micro/views/splits.go @@ -42,7 +42,8 @@ type Node struct { // the window is resized the split maintains its proportions propScale bool - id uint64 + propW, propH float64 + id uint64 } func (n *Node) ID() uint64 { @@ -98,6 +99,11 @@ func NewNode(Kind SplitType, x, y, w, h int, parent *Node, id uint64) *Node { n.children = make([]*Node, 0) n.parent = parent n.id = id + if parent != nil { + n.propW, n.propH = float64(w)/float64(parent.W), float64(h)/float64(parent.H) + } else { + n.propW, n.propH = 1, 1 + } return n } @@ -124,6 +130,7 @@ func (n *Node) vResizeSplit(i int, size int) bool { c2.Y = size c1.Resize(c1.W, size) c2.Resize(c2.W, toth-size) + n.propW = float64(size) / float64(n.parent.W) return true } func (n *Node) hResizeSplit(i int, size int) bool { @@ -138,6 +145,7 @@ func (n *Node) hResizeSplit(i int, size int) bool { c2.X = size c1.Resize(size, c1.H) c2.Resize(totw-size, c2.H) + n.propH = float64(size) / float64(n.parent.H) return true } @@ -311,16 +319,14 @@ func (n *Node) Resize(w, h int) { if n.IsLeaf() { n.W, n.H = w, h } else { - propW, propH := float64(w)/float64(n.W), float64(h)/float64(n.H) - log.Println(w, h, n.W, n.H, propW, propH) x, y := n.X, n.Y for i, c := range n.children { - cW := int(float64(c.W) * propW) - // if c.IsLeaf() && i != len(n.children)-1 { - // cW++ - // } - log.Println("WIDTH:", cW, c.W) - cH := int(float64(c.H) * propH) + cW := int(float64(w) * c.propW) + if c.IsLeaf() && i != len(n.children)-1 { + cW++ + } + cH := int(float64(h) * c.propH) + log.Println(c.id, c.propW, c.propH, cW, cH, w, h) c.Resize(cW, cH) c.X = x c.Y = y -- 2.44.0