mirror of
https://github.com/rivo/tview.git
synced 2025-04-26 13:49:06 +08:00
Merge pull request #431 from millerlogic/treeview-handlers
Allow changing current node and changing focus in treeview handlers
This commit is contained in:
commit
823f280c54
19
treeview.go
19
treeview.go
@ -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…
x
Reference in New Issue
Block a user