Part of epic #595, milestone #9 TUI ShellApp Migration. Stage 5 of the work order. Depends on Stage 2; blocked on quadraui#466.
Goal
Place the editor's blinking cursor on the TUI ShellApp render path.
The gap (gap 3 in the module doc)
Backend::draw_editor's EditorPaintResult::cursor_position is documented "host applies via Frame::set_cursor_position", but no consumer of it exists anywhere in quadraui's shell_adapter/TUI runner. render_content(&self, backend: &mut dyn Backend, ...) has no raw Frame to call set_cursor_position on, so without a quadraui-side fix the live TUI would lose its cursor after cutover.
Fix
Consume quadraui#466: cache the position on TuiBackend from draw_editor, and apply it in tui/run.rs::render_frame post-render_content, exactly the way apply_selection_highlight already runs after render_content. Then verify the cursor is placed correctly through the ShellApp path.
Acceptance
- Cursor visible + correctly positioned via the
ShellApp render path (manual + driver_with_shell assertion if the harness can observe cursor position).
- Must land before the Stage 6 cutover.
Dependencies
Depends on Stage 2. Blocked on quadraui#466 (supply-side). Refs: PLAN.md Stage 5; shell_app.rs gap 3.
Part of epic #595, milestone #9 TUI ShellApp Migration. Stage 5 of the work order. Depends on Stage 2; blocked on quadraui#466.
Goal
Place the editor's blinking cursor on the TUI
ShellApprender path.The gap (gap 3 in the module doc)
Backend::draw_editor'sEditorPaintResult::cursor_positionis documented "host applies viaFrame::set_cursor_position", but no consumer of it exists anywhere in quadraui'sshell_adapter/TUI runner.render_content(&self, backend: &mut dyn Backend, ...)has no rawFrameto callset_cursor_positionon, so without a quadraui-side fix the live TUI would lose its cursor after cutover.Fix
Consume quadraui#466: cache the position on
TuiBackendfromdraw_editor, and apply it intui/run.rs::render_framepost-render_content, exactly the wayapply_selection_highlightalready runs afterrender_content. Then verify the cursor is placed correctly through theShellApppath.Acceptance
ShellApprender path (manual +driver_with_shellassertion if the harness can observe cursor position).Dependencies
Depends on Stage 2. Blocked on quadraui#466 (supply-side). Refs: PLAN.md Stage 5;
shell_app.rsgap 3.