diff --git a/internal/ui/dialog/commands.go b/internal/ui/dialog/commands.go index a560ce21c0a8985ddd245dffbb6045ec08350212..6e769e66f7217c994f877582e8ca2eca80577b9a 100644 --- a/internal/ui/dialog/commands.go +++ b/internal/ui/dialog/commands.go @@ -153,19 +153,17 @@ func (c *Commands) HandleMsg(msg tea.Msg) Action { c.list.Focus() if c.list.IsSelectedFirst() { c.list.SelectLast() - c.list.ScrollToBottom() - break + } else { + c.list.SelectPrev() } - c.list.SelectPrev() c.list.ScrollToSelected() case key.Matches(msg, c.keyMap.Next): c.list.Focus() if c.list.IsSelectedLast() { c.list.SelectFirst() - c.list.ScrollToTop() - break + } else { + c.list.SelectNext() } - c.list.SelectNext() c.list.ScrollToSelected() case key.Matches(msg, c.keyMap.Select): if selectedItem := c.list.SelectedItem(); selectedItem != nil { diff --git a/internal/ui/dialog/models.go b/internal/ui/dialog/models.go index 7594c2476218ae241c4b21cbb455b19f00923c47..657cdd362de044defdd84928cb01fad4477b37b0 100644 --- a/internal/ui/dialog/models.go +++ b/internal/ui/dialog/models.go @@ -174,19 +174,17 @@ func (m *Models) HandleMsg(msg tea.Msg) Action { m.list.Focus() if m.list.IsSelectedFirst() { m.list.SelectLast() - m.list.ScrollToBottom() - break + } else { + m.list.SelectPrev() } - m.list.SelectPrev() m.list.ScrollToSelected() case key.Matches(msg, m.keyMap.Next): m.list.Focus() if m.list.IsSelectedLast() { m.list.SelectFirst() - m.list.ScrollToTop() - break + } else { + m.list.SelectNext() } - m.list.SelectNext() m.list.ScrollToSelected() case key.Matches(msg, m.keyMap.Select, m.keyMap.Edit): selectedItem := m.list.SelectedItem() diff --git a/internal/ui/dialog/sessions.go b/internal/ui/dialog/sessions.go index cfb0f30623c383b775c3a960134057e6c79ce9b8..7f9bb952617e86708bcd1bf5d02c007029e3e53e 100644 --- a/internal/ui/dialog/sessions.go +++ b/internal/ui/dialog/sessions.go @@ -190,19 +190,17 @@ func (s *Session) HandleMsg(msg tea.Msg) Action { s.list.Focus() if s.list.IsSelectedFirst() { s.list.SelectLast() - s.list.ScrollToBottom() - break + } else { + s.list.SelectPrev() } - s.list.SelectPrev() s.list.ScrollToSelected() case key.Matches(msg, s.keyMap.Next): s.list.Focus() if s.list.IsSelectedLast() { s.list.SelectFirst() - s.list.ScrollToTop() - break + } else { + s.list.SelectNext() } - s.list.SelectNext() s.list.ScrollToSelected() case key.Matches(msg, s.keyMap.Select): if item := s.list.SelectedItem(); item != nil {