From 03b18fe755acf77f5e10b9000ed7a2cf605af465 Mon Sep 17 00:00:00 2001 From: Ayman Bagabas Date: Mon, 5 Jan 2026 14:41:13 -0500 Subject: [PATCH] fix(ui): list: countLines should return 1 for empty strings --- internal/ui/dialog/models_list.go | 18 ++++++++++++++++++ internal/ui/list/list.go | 2 +- 2 files changed, 19 insertions(+), 1 deletion(-) 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 }