a43ef673b07451f7d5c044302a2cd8e7bf5210f8
Ready state can have VHI=None during async rebuild (Tab toggle, resize, file append, Loading→Ready transition). Without rebase, v_offset retains a visual-row value that gets treated as a logical-line offset, causing viewport jumps and cursor drift. Changes: - Add rebase_offset_for_invalidate() to convert v_offset from visual-row to logical-line + sub-row before VHI invalidation - Call it at all 6 invalidation sites in Ready state - Recalibrate v_offset from viewport top when VHI rebuild completes - Clamp preserved sub_row to new line height after JSON/width changes Regression tests: 6 new tests covering rebase conversion, Tab toggle, VHI rebuild recalibration, sub-row clamping, and Loading→Ready transition.
Description
No description provided
Languages
Rust
100%