Skip to content

Commit

Permalink
Space will also select a node in a TreeView. Resolves rivo#280
Browse files Browse the repository at this point in the history
  • Loading branch information
Oliver committed May 14, 2019
1 parent d14da4f commit 7cc6943
Showing 1 changed file with 14 additions and 8 deletions.
22 changes: 14 additions & 8 deletions treeview.go
Original file line number Diff line number Diff line change
Expand Up @@ -656,6 +656,17 @@ func (t *TreeView) Draw(screen tcell.Screen) {
// InputHandler returns the handler for this primitive.
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 {
if t.selected != nil {
t.selected(t.currentNode)
}
if t.currentNode.selected != nil {
t.currentNode.selected()
}
}
}

// Because the tree is flattened into a list only at drawing time, we also
// postpone the (selection) movement to drawing time.
switch key := event.Key(); key {
Expand All @@ -681,16 +692,11 @@ func (t *TreeView) InputHandler() func(event *tcell.EventKey, setFocus func(p Pr
t.movement = treeDown
case 'k':
t.movement = treeUp
case ' ':
selectNode()
}
case tcell.KeyEnter:
if t.currentNode != nil {
if t.selected != nil {
t.selected(t.currentNode)
}
if t.currentNode.selected != nil {
t.currentNode.selected()
}
}
selectNode()
}

t.process()
Expand Down

0 comments on commit 7cc6943

Please sign in to comment.