fix bug where creating new file in collapsed folder leads to nothing selected
This commit is contained in:
+21
-17
@@ -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 == "" {
|
||||||
|
|||||||
@@ -1,3 +0,0 @@
|
|||||||
# what is bubbletea?
|
|
||||||
|
|
||||||
it's a simple framework based on elm architecture
|
|
||||||
Reference in New Issue
Block a user