Bugfix in TreeView which may have caused an index out of range. Fixes #262 (hopefully)

pull/287/head
Oliver 5 years ago
parent 7a653a04b3
commit f2bf2be1ba

@ -409,22 +409,26 @@ func (t *TreeView) process() {
node.graphicsX = 0 node.graphicsX = 0
node.textX = 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 { 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) t.nodes = append(t.nodes, node)
} }
// Recurse if desired.
return node.expanded return node.expanded
}) })
@ -478,7 +482,7 @@ func (t *TreeView) process() {
} }
} }
newSelectedIndex = selectedIndex newSelectedIndex = selectedIndex
case treePageUp: case treePageDown:
if newSelectedIndex+height < len(t.nodes) { if newSelectedIndex+height < len(t.nodes) {
newSelectedIndex += height newSelectedIndex += height
} else { } else {
@ -490,7 +494,7 @@ func (t *TreeView) process() {
} }
} }
newSelectedIndex = selectedIndex newSelectedIndex = selectedIndex
case treePageDown: case treePageUp:
if newSelectedIndex >= height { if newSelectedIndex >= height {
newSelectedIndex -= height newSelectedIndex -= height
} else { } else {

Loading…
Cancel
Save