Merge pull request #431 from millerlogic/treeview-handlers

Allow changing current node and changing focus in treeview handlers
pull/449/head
rivo 4 years ago committed by GitHub
commit 823f280c54
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -681,12 +681,13 @@ func (t *TreeView) Draw(screen tcell.Screen) {
func (t *TreeView) InputHandler() func(event *tcell.EventKey, setFocus func(p Primitive)) {
return t.WrapInputHandler(func(event *tcell.EventKey, setFocus func(p Primitive)) {
selectNode := func() {
if t.currentNode != nil {
node := t.currentNode
if node != nil {
if t.selected != nil {
t.selected(t.currentNode)
t.selected(node)
}
if t.currentNode.selected != nil {
t.currentNode.selected()
if node.selected != nil {
node.selected()
}
}
}
@ -741,22 +742,26 @@ func (t *TreeView) MouseHandler() func(action MouseAction, event *tcell.EventMou
switch action {
case MouseLeftClick:
setFocus(t)
_, rectY, _, _ := t.GetInnerRect()
y -= rectY
if y >= 0 && y < len(t.nodes) {
node := t.nodes[y]
if node.selectable {
if t.currentNode != node && t.changed != nil {
previousNode := t.currentNode
t.currentNode = node
if previousNode != node && t.changed != nil {
t.changed(node)
}
if t.selected != nil {
t.selected(node)
}
t.currentNode = node
if node.selected != nil {
node.selected()
}
}
}
consumed = true
setFocus(t)
case MouseScrollUp:
t.movement = treeUp
consumed = true

Loading…
Cancel
Save