Resizing work

This commit is contained in:
Zachary Yedidia
2019-01-05 19:41:40 -05:00
parent 305f4debff
commit 9cf283e312
4 changed files with 34 additions and 20 deletions

View 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)
}

View 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 {

View 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")

View 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