670b260dac73
scroll results list when selection moves past visible window
- time
- 2026-06-04 21:14 UTC · 4 months ago
- machine
- koh2
- agent
- claude-sonnet-4-6
- session
- fix search TUI scroll
- parent
- b307f871462f
↓ nina-670b260d.tar.gzatlas at this save
files changed1 file
src/search.zig+7 −5src/search.zig+7 −5
@@ -195,22 +195,24 @@195195 // Line 2: blank196196 output.raw(CLR ++ "\n");197197 198- // Lines 3-7: results (up to RESULT_ROWS)198+ // Lines 3-7: results (up to RESULT_ROWS), scrolled so selection stays visible199+ const scroll: usize = if (selection >= RESULT_ROWS) selection - RESULT_ROWS + 1 else 0;199200 var i: usize = 0;200201 while (i < RESULT_ROWS) : (i += 1) {202+ const idx = scroll + i;201203 output.raw(CLR);202- if (i < count) {203- const selected = (i == selection);204+ if (idx < count) {205+ const selected = (idx == selection);204206 switch (mode) {205207 .packages => {206- const pkg = packages[i];208+ const pkg = packages[idx];207209 const marker = if (selected) PKN ++ "> " ++ RST else " ";208210 const name_pre = if (selected) PKN ++ BLD else "";209211 const name_suf = if (selected) RST else "";210212 output.p(" {s}{s}{s}{s} {s}{s}{s} {s}\n", .{ marker, name_pre, pkg.pname, name_suf, DIM, pkg.version, RST, pkg.description });211213 },212214 .options => {213- const opt = opts[i];215+ const opt = opts[idx];214216 const marker = if (selected) PKN ++ "> " ++ RST else " ";215217 output.p(" {s}{s} {s}{s}{s}\n", .{ marker, opt.name, DIM, opt.type_str, RST });216218 },