From 7ef8ca476d2d2e1edb8bda04b83bc10c96d2b718 Mon Sep 17 00:00:00 2001 From: Neko Box Coder Date: Sat, 31 Jan 2026 15:10:25 +0000 Subject: [PATCH] Fixing missing case for handling root node for splitting, fixes #3980 --- internal/views/splits.go | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/internal/views/splits.go b/internal/views/splits.go index b2a20873..1ee8d72f 100644 --- a/internal/views/splits.go +++ b/internal/views/splits.go @@ -413,7 +413,7 @@ func (n *Node) HSplit(bottom bool) uint64 { if !n.IsLeaf() { return 0 } - if n.Kind == STUndef { + if n.parent == nil { n.Kind = STVert } if n.Kind == STVert { @@ -429,13 +429,13 @@ func (n *Node) VSplit(right bool) uint64 { if !n.IsLeaf() { return 0 } - if n.Kind == STUndef { + if n.parent == nil { n.Kind = STHoriz } - if n.Kind == STVert { - return n.vVSplit(right) + if n.Kind == STHoriz { + return n.hVSplit(0, right) } - return n.hVSplit(0, right) + return n.vVSplit(right) } // unsplits the child of a split @@ -531,11 +531,19 @@ func (n *Node) flatten() { func (n *Node) String() string { var strf func(n *Node, ident int) string strf = func(n *Node, ident int) string { - marker := "|" + marker := "" if n.Kind == STHoriz { marker = "-" + } else if n.Kind == STVert { + marker = "|" } - str := fmt.Sprint(strings.Repeat("\t", ident), marker, n.View, n.id) + + var parentId uint64 = 0 + if n.parent != nil { + parentId = n.parent.id + } + + str := fmt.Sprint(strings.Repeat("\t", ident), marker, n.View, n.id, parentId) if n.IsLeaf() { str += "🍁" }