on main help sign in
fix(ui): dialogs: loop around and scroll list when navigating with up/down keys
commit155fc618b392eb0f9e49daeb8ad233c943e0349c authorAyman Bagabas <ayman.bagabas@gmail.com> dateWed 11 Feb 2026, 13:48 (8 months ago) parent4f3b056
3 files changed+12−18
internal/ui/dialog/commands.go+4−6 internal/ui/dialog/models.go+4−6 internal/ui/dialog/sessions.go+4−6
internal/ui/dialog/commands.go+4−6
@@ -153,19 +153,17 @@ func (c *Commands) HandleMsg(msg tea.Msg) Action {
153153 c.list.Focus()
154154 if c.list.IsSelectedFirst() {
155155 c.list.SelectLast()
156− c.list.ScrollToBottom()
157− break
156+ } else {
157+ c.list.SelectPrev()
158158 }
159− c.list.SelectPrev()
160159 c.list.ScrollToSelected()
161160 case key.Matches(msg, c.keyMap.Next):
162161 c.list.Focus()
163162 if c.list.IsSelectedLast() {
164163 c.list.SelectFirst()
165− c.list.ScrollToTop()
166− break
164+ } else {
165+ c.list.SelectNext()
167166 }
168− c.list.SelectNext()
169167 c.list.ScrollToSelected()
170168 case key.Matches(msg, c.keyMap.Select):
171169 if selectedItem := c.list.SelectedItem(); selectedItem != nil {
internal/ui/dialog/models.go+4−6
@@ -174,19 +174,17 @@ func (m *Models) HandleMsg(msg tea.Msg) Action {
174174 m.list.Focus()
175175 if m.list.IsSelectedFirst() {
176176 m.list.SelectLast()
177− m.list.ScrollToBottom()
178− break
177+ } else {
178+ m.list.SelectPrev()
179179 }
180− m.list.SelectPrev()
181180 m.list.ScrollToSelected()
182181 case key.Matches(msg, m.keyMap.Next):
183182 m.list.Focus()
184183 if m.list.IsSelectedLast() {
185184 m.list.SelectFirst()
186− m.list.ScrollToTop()
187− break
185+ } else {
186+ m.list.SelectNext()
188187 }
189− m.list.SelectNext()
190188 m.list.ScrollToSelected()
191189 case key.Matches(msg, m.keyMap.Select, m.keyMap.Edit):
192190 selectedItem := m.list.SelectedItem()
internal/ui/dialog/sessions.go+4−6
@@ -190,19 +190,17 @@ func (s *Session) HandleMsg(msg tea.Msg) Action {
190190 s.list.Focus()
191191 if s.list.IsSelectedFirst() {
192192 s.list.SelectLast()
193− s.list.ScrollToBottom()
194− break
193+ } else {
194+ s.list.SelectPrev()
195195 }
196− s.list.SelectPrev()
197196 s.list.ScrollToSelected()
198197 case key.Matches(msg, s.keyMap.Next):
199198 s.list.Focus()
200199 if s.list.IsSelectedLast() {
201200 s.list.SelectFirst()
202− s.list.ScrollToTop()
203− break
201+ } else {
202+ s.list.SelectNext()
204203 }
205− s.list.SelectNext()
206204 s.list.ScrollToSelected()
207205 case key.Matches(msg, s.keyMap.Select):
208206 if item := s.list.SelectedItem(); item != nil {