mirror of
https://github.com/zyedidia/micro.git
synced 2026-02-04 22:20:20 +09:00
Resizing work
This commit is contained in:
@@ -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)
|
||||
}
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user