fix(virtual_list): Scroll en última fila y posición correcta

- moveDown: Calcular screen position antes de decidir scroll
- Scroll ahora ocurre cuando llega a última fila visible (no penúltima)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
R.Eugenio 2025-12-23 14:18:47 +01:00
parent b9e7434ef7
commit ae993a0f6f

View file

@ -219,8 +219,13 @@ pub const VirtualListState = struct {
if (window_idx + 1 < self.current_window.len) { if (window_idx + 1 < self.current_window.len) {
self.selectByWindowIndex(window_idx + 1); self.selectByWindowIndex(window_idx + 1);
// Si la nueva selección está cerca del final visible, scroll // Calcular posición en pantalla de la nueva selección
if (window_idx + 1 >= visible_rows - 1) { const window_offset = self.scroll_offset -| self.window_start;
const new_screen_pos = (window_idx + 1) -| window_offset;
// Scroll cuando la nueva posición llega a la ÚLTIMA fila visible
// (visible_rows - 1 es el índice de la última fila, 0-indexed)
if (new_screen_pos >= visible_rows) {
self.scroll_offset += 1; self.scroll_offset += 1;
} }
} }