mirror of
https://github.com/rivo/tview.git
synced 2025-04-24 13:48:56 +08:00
Bugfix in TreeView which may have caused an index out of range. Fixes #262 (hopefully)
This commit is contained in:
parent
7a653a04b3
commit
f2bf2be1ba
32
treeview.go
32
treeview.go
@ -409,22 +409,26 @@ func (t *TreeView) process() {
|
||||
node.graphicsX = 0
|
||||
node.textX = 0
|
||||
}
|
||||
if node.textX > maxTextX {
|
||||
maxTextX = node.textX
|
||||
}
|
||||
if node == t.currentNode && node.selectable {
|
||||
selectedIndex = len(t.nodes)
|
||||
}
|
||||
|
||||
// Maybe we want to skip this level.
|
||||
if t.topLevel == node.level && (topLevelGraphicsX < 0 || node.graphicsX < topLevelGraphicsX) {
|
||||
topLevelGraphicsX = node.graphicsX
|
||||
}
|
||||
|
||||
// Add and recurse (if desired).
|
||||
// Add the node to the list.
|
||||
if node.level >= t.topLevel {
|
||||
// This node will be visible.
|
||||
if node.textX > maxTextX {
|
||||
maxTextX = node.textX
|
||||
}
|
||||
if node == t.currentNode && node.selectable {
|
||||
selectedIndex = len(t.nodes)
|
||||
}
|
||||
|
||||
// Maybe we want to skip this level.
|
||||
if t.topLevel == node.level && (topLevelGraphicsX < 0 || node.graphicsX < topLevelGraphicsX) {
|
||||
topLevelGraphicsX = node.graphicsX
|
||||
}
|
||||
|
||||
t.nodes = append(t.nodes, node)
|
||||
}
|
||||
|
||||
// Recurse if desired.
|
||||
return node.expanded
|
||||
})
|
||||
|
||||
@ -478,7 +482,7 @@ func (t *TreeView) process() {
|
||||
}
|
||||
}
|
||||
newSelectedIndex = selectedIndex
|
||||
case treePageUp:
|
||||
case treePageDown:
|
||||
if newSelectedIndex+height < len(t.nodes) {
|
||||
newSelectedIndex += height
|
||||
} else {
|
||||
@ -490,7 +494,7 @@ func (t *TreeView) process() {
|
||||
}
|
||||
}
|
||||
newSelectedIndex = selectedIndex
|
||||
case treePageDown:
|
||||
case treePageUp:
|
||||
if newSelectedIndex >= height {
|
||||
newSelectedIndex -= height
|
||||
} else {
|
||||
|
Loading…
x
Reference in New Issue
Block a user