aboutsummaryrefslogtreecommitdiff
path: root/vendor/maunium.net/go/tview/list.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/maunium.net/go/tview/list.go')
-rw-r--r--vendor/maunium.net/go/tview/list.go18
1 files changed, 10 insertions, 8 deletions
diff --git a/vendor/maunium.net/go/tview/list.go b/vendor/maunium.net/go/tview/list.go
index cc25262..bc5be85 100644
--- a/vendor/maunium.net/go/tview/list.go
+++ b/vendor/maunium.net/go/tview/list.go
@@ -222,8 +222,8 @@ func (l *List) Draw(screen tcell.Screen) {
// We want to keep the current selection in view. What is our offset?
var offset int
if l.showSecondaryText {
- if l.currentItem >= height/2 {
- offset = l.currentItem + 1 - (height / 2)
+ if 2*l.currentItem >= height {
+ offset = (2*l.currentItem + 2 - height) / 2
}
} else {
if l.currentItem >= height {
@@ -296,12 +296,14 @@ func (l *List) InputHandler() func(event *tcell.EventKey, setFocus func(p Primit
case tcell.KeyPgUp:
l.currentItem -= 5
case tcell.KeyEnter:
- item := l.items[l.currentItem]
- if item.Selected != nil {
- item.Selected()
- }
- if l.selected != nil {
- l.selected(l.currentItem, item.MainText, item.SecondaryText, item.Shortcut)
+ if l.currentItem >= 0 && l.currentItem < len(l.items) {
+ item := l.items[l.currentItem]
+ if item.Selected != nil {
+ item.Selected()
+ }
+ if l.selected != nil {
+ l.selected(l.currentItem, item.MainText, item.SecondaryText, item.Shortcut)
+ }
}
case tcell.KeyEscape:
if l.done != nil {