on main help sign in
chore: do not scroll sessions if not neccessary
e753d09Kujtim Hoxha
internal/ui/dialog/sessions.go+8−1
@@ -57,7 +57,6 @@ func NewSessions(com *common.Common, selectedSessionID string) (*Session, error)
57 s.list = list.NewFilterableList(sessionItems(com.Styles, sessions...)...)
57 s.list = list.NewFilterableList(sessionItems(com.Styles, sessions...)...)
58 s.list.Focus()
58 s.list.Focus()
59 s.list.SetSelected(s.selectedSessionInx)
59 s.list.SetSelected(s.selectedSessionInx)
60− s.list.ScrollToSelected()
61
60
62 s.input = textinput.New()
61 s.input = textinput.New()
63 s.input.SetVirtualCursor(false)
62 s.input.SetVirtualCursor(false)
@@ -153,6 +152,14 @@ func (s *Session) Draw(scr uv.Screen, area uv.Rectangle) *tea.Cursor {
153 s.list.SetSize(innerWidth, height-heightOffset)
152 s.list.SetSize(innerWidth, height-heightOffset)
154 s.help.SetWidth(innerWidth)
153 s.help.SetWidth(innerWidth)
155
154
155+ // This makes it so we do not scroll the list if we don't have to
156+ start, end := s.list.VisibleItemIndices()
157+
158+ // if selected index is outside visible range, scroll to it
159+ if s.selectedSessionInx < start || s.selectedSessionInx > end {
160+ s.list.ScrollToSelected()
161+ }
162+
156 rc := NewRenderContext(t, width)
163 rc := NewRenderContext(t, width)
157 rc.Title = "Switch Session"
164 rc.Title = "Switch Session"
158 inputView := t.Dialog.InputPrompt.Render(s.input.View())
165 inputView := t.Dialog.InputPrompt.Render(s.input.View())