]> git.lizzy.rs Git - micro.git/commitdiff
Resizing work
authorZachary Yedidia <zyedidia@gmail.com>
Sun, 6 Jan 2019 00:41:40 +0000 (19:41 -0500)
committerZachary Yedidia <zyedidia@gmail.com>
Wed, 25 Dec 2019 22:05:10 +0000 (17:05 -0500)
cmd/micro/action/command.go
cmd/micro/micro.go
cmd/micro/util/message.go
cmd/micro/views/splits.go

index 96ea957e5a7153754252284b36db6acd42792af5..664a9ceeacaea8959a65cab9270b915495991e2d 100644 (file)
@@ -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)
 }
 
index 5134992260d51fbcd73090036c7ab61ca9d3b37a..e711bec78e016c14835260e547e970a5e7ca754e 100644 (file)
@@ -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 {
index 2a1ddce100fde7f37a393ad93141371fca9a9060..3b31cd17abad22aed7c8d2b216e91e0db192ba0b 100644 (file)
@@ -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")
index 144437bad12ed9a63dcf4a4175fa0ffd7e2de231..3c1521a30521b1553ca408441072fa2f1ed07a74 100644 (file)
@@ -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