fix(tui): Center the initially selected session in the session_list (resolves #8558) (#8560)

This commit is contained in:
Ariane Emory
2026-01-15 02:04:20 -05:00
committed by GitHub
parent 6473e15793
commit 08ca1237cc

View File

@@ -109,15 +109,16 @@ export function DialogSelect<T>(props: DialogSelectProps<T>) {
createEffect(
on([() => store.filter, () => props.current], ([filter, current]) => {
setTimeout(() => {
if (filter.length > 0) {
setStore("selected", 0)
moveTo(0, true)
} else if (current) {
const currentIndex = flat().findIndex((opt) => isDeepEqual(opt.value, current))
if (currentIndex >= 0) {
setStore("selected", currentIndex)
moveTo(currentIndex, true)
}
}
scroll?.scrollTo(0)
}, 0)
}),
)
@@ -129,7 +130,7 @@ export function DialogSelect<T>(props: DialogSelectProps<T>) {
moveTo(next)
}
function moveTo(next: number) {
function moveTo(next: number, center = false) {
setStore("selected", next)
props.onMove?.(selected()!)
if (!scroll) return
@@ -138,6 +139,10 @@ export function DialogSelect<T>(props: DialogSelectProps<T>) {
})
if (!target) return
const y = target.y - scroll.y
if (center) {
const centerOffset = Math.floor(scroll.height / 2)
scroll.scrollBy(y - centerOffset)
} else {
if (y >= scroll.height) {
scroll.scrollBy(y - scroll.height + 1)
}
@@ -148,6 +153,7 @@ export function DialogSelect<T>(props: DialogSelectProps<T>) {
}
}
}
}
const keybind = useKeybind()
useKeyboard((evt) => {