fix bug where creating new file in collapsed folder leads to nothing selected

This commit is contained in:
2026-01-03 21:54:11 +00:00
parent cee3aa323e
commit a711d9abea
8 changed files with 21 additions and 20 deletions
+21 -17
View File
@@ -120,34 +120,36 @@ func (t *FsTree) View() string {
return t.errMsg return t.errMsg
} }
if len(t.root.children) == 0 {
return "no files/folders\nPress C to create"
}
builder := &strings.Builder{} builder := &strings.Builder{}
t.renderNode(t.root, 0, builder) t.renderNode(t.root, 0, builder)
rendered := builder.String() rendered := builder.String()
// clamp to height around selected node // clamp to height around selected node
if t.selectedNode != nil { lines := strings.Split(rendered, "\n")
lines := strings.Split(rendered, "\n") totalLines := len(lines)
totalLines := len(lines) selectedLine := t.selectedNode.line
selectedLine := t.selectedNode.line
halfHeight := t.height / 2 halfHeight := t.height / 2
startLine := selectedLine - halfHeight startLine := selectedLine - halfHeight
if startLine < 0 {
startLine = 0
}
endLine := startLine + t.height
if endLine > totalLines {
endLine = totalLines
startLine = endLine - t.height
if startLine < 0 { if startLine < 0 {
startLine = 0 startLine = 0
} }
endLine := startLine + t.height
if endLine > totalLines {
endLine = totalLines
startLine = endLine - t.height
if startLine < 0 {
startLine = 0
}
}
clampedLines := lines[startLine:endLine]
rendered = strings.Join(clampedLines, "\n")
} }
clampedLines := lines[startLine:endLine]
rendered = strings.Join(clampedLines, "\n")
return rendered return rendered
} }
@@ -351,6 +353,8 @@ func (t *FsTree) CreateNode(folder *FsNode, name string, nodeType FsNodeType) er
if folder.nodeType != FolderNode { if folder.nodeType != FolderNode {
return errors.New("parent node must be a folder. this should not be allowed by ui") return errors.New("parent node must be a folder. this should not be allowed by ui")
} else if folder.nodeType == FolderNode && !folder.expanded {
folder.expanded = true
} }
if name == "" { if name == "" {
-3
View File
@@ -1,3 +0,0 @@
# what is bubbletea?
it's a simple framework based on elm architecture