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

Loading…
Cancel
Save