diff --git a/internal/ui/dialog/models_list.go b/internal/ui/dialog/models_list.go index bf17e136366252c5862af1b8d7420c4b3be943ee..4cba59d0f8d33b6f7affa98603bfeed1de29cfa2 100644 --- a/internal/ui/dialog/models_list.go +++ b/internal/ui/dialog/models_list.go @@ -144,6 +144,24 @@ func (f *ModelsList) SelectLast() (v bool) { } } +// IsSelectedFirst checks if the selected item is the first model item. +func (f *ModelsList) IsSelectedFirst() bool { + originalIndex := f.List.Selected() + f.SelectFirst() + isFirst := f.List.Selected() == originalIndex + f.List.SetSelected(originalIndex) + return isFirst +} + +// IsSelectedLast checks if the selected item is the last model item. +func (f *ModelsList) IsSelectedLast() bool { + originalIndex := f.List.Selected() + f.SelectLast() + isLast := f.List.Selected() == originalIndex + f.List.SetSelected(originalIndex) + return isLast +} + // VisibleItems returns the visible items after filtering. func (f *ModelsList) VisibleItems() []list.Item { if f.query == "" { diff --git a/internal/ui/list/list.go b/internal/ui/list/list.go index 0d0ea18186546bbc017819cbee445a04c913d0bb..cd2c36c0c8b99d8d9a4dca7b7e1a69a0d17705ed 100644 --- a/internal/ui/list/list.go +++ b/internal/ui/list/list.go @@ -553,7 +553,7 @@ func (l *List) findItemAtY(_, y int) (itemIdx int, itemY int) { // countLines counts the number of lines in a string. func countLines(s string) int { if s == "" { - return 0 + return 1 } return strings.Count(s, "\n") + 1 }