4 "github.com/zyedidia/micro/v2/internal/buffer"
5 "github.com/zyedidia/micro/v2/internal/config"
6 "github.com/zyedidia/micro/v2/internal/screen"
7 "github.com/zyedidia/micro/v2/internal/util"
8 "github.com/zyedidia/micro/v2/internal/views"
11 type UIWindow struct {
15 func NewUIWindow(n *views.Node) *UIWindow {
21 func (w *UIWindow) drawNode(n *views.Node) {
23 dividerStyle := config.DefStyle
24 if style, ok := config.Colorscheme["divider"]; ok {
28 divchars := config.GetGlobalOption("divchars").(string)
29 if util.CharacterCountInString(divchars) != 2 {
33 divchar, combc, _ := util.DecodeCharacterInString(divchars)
35 divreverse := config.GetGlobalOption("divreverse").(bool)
37 dividerStyle = dividerStyle.Reverse(true)
40 for i, c := range cs {
41 if c.Kind == views.STVert {
43 for h := 0; h < c.H; h++ {
44 screen.SetContent(c.X+c.W, c.Y+h, divchar, combc, dividerStyle)
52 func (w *UIWindow) Display() {
56 func (w *UIWindow) GetMouseSplitNode(vloc buffer.Loc) *views.Node {
57 var mouseLoc func(*views.Node) *views.Node
58 mouseLoc = func(n *views.Node) *views.Node {
60 for i, c := range cs {
61 if c.Kind == views.STVert {
63 if vloc.X == c.X+c.W && vloc.Y >= c.Y && vloc.Y < c.Y+c.H {
67 } else if c.Kind == views.STHoriz {
69 if vloc.Y == c.Y+c.H-1 && vloc.X >= c.X && vloc.X < c.X+c.W {
75 for _, c := range cs {
83 return mouseLoc(w.root)
85 func (w *UIWindow) Resize(width, height int) {}
86 func (w *UIWindow) SetActive(b bool) {}