Problem
Both backends directly manipulate engine.picker_selected and engine.picker_scroll_top with manual clamping, then call engine.picker_load_preview():
- GTK:
mod.rs:4471-4489, ~19 lines
- TUI:
mouse.rs:617-868, ~30 lines of scroll logic (within a larger picker block)
Proposed fix
Add Engine::picker_scroll(delta: isize) that handles selection movement, scroll offset clamping, and preview loading in one call.
Context
Identified in Session 370 backend dedup audit.
Problem
Both backends directly manipulate
engine.picker_selectedandengine.picker_scroll_topwith manual clamping, then callengine.picker_load_preview():mod.rs:4471-4489, ~19 linesmouse.rs:617-868, ~30 lines of scroll logic (within a larger picker block)Proposed fix
Add
Engine::picker_scroll(delta: isize)that handles selection movement, scroll offset clamping, and preview loading in one call.Context
Identified in Session 370 backend dedup audit.