You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Sub-task 3/4 of #592. Read #592 first — it holds the root cause, the full 13-field table, and the evidence that src/gtk/draw.rs has no live callers.
What
Port the remaining four chrome / transient surfaces from the orphaned src/gtk/draw.rs path onto the live GTK ShellApp::render_content path. These are the last of #592's thirteen.
screen.* field
dead GTK site
find_replace
draw.rs:1833
tab_switcher
draw.rs:1896
separated_status_line
none — never had a GTK painter
tab_tooltip
none — never had a GTK painter
Why this group
Two of these four have no dead GTK painter to port from at all, so they are a different
job from #592-A / #592-B: rather than reviving an orphan, you are writing the first GTK paint
call, using the TUI call site as the reference for which shared adapter to use. Grouped
together so that difference is faced once.
find_replace was confirmed empirically in #592 the same way the command palette was in #587 — trigger "Edit: Find & Replace" and the overlay state opens while nothing paints:
For the two with no dead painter, find the shared adapter the TUI call site uses and call
the same one. If no shared adapter exists, add it to src/render.rs — not to src/gtk/. Writing a GTK-only painter here would recreate the exact debt this issue
retires (see the Platform-Neutrality Rule in CLAUDE.md).
⚠ The TUI line numbers in #592's table are pre-#634. The TUI cutover to run_with_shell
moved those paint sites into src/tui_main/shell_app.rs. Locate the current TUI call site by
symbol, not by the line numbers in that table.
Sub-task 3/4 of #592. Read #592 first — it holds the root cause, the full 13-field table, and the evidence that
src/gtk/draw.rshas no live callers.What
Port the remaining four chrome / transient surfaces from the orphaned
src/gtk/draw.rspath onto the live GTKShellApp::render_contentpath. These are the last of #592's thirteen.screen.*fieldfind_replacedraw.rs:1833tab_switcherdraw.rs:1896separated_status_linetab_tooltipWhy this group
Two of these four have no dead GTK painter to port from at all, so they are a different
job from #592-A / #592-B: rather than reviving an orphan, you are writing the first GTK paint
call, using the TUI call site as the reference for which shared adapter to use. Grouped
together so that difference is faced once.
find_replacewas confirmed empirically in #592 the same way the command palette was in#587 — trigger "Edit: Find & Replace" and the overlay state opens while nothing paints:
Design
ScreenLayout, build theprimitive through the shared adapter in
render.rs, callBackend::draw_*insiderender_content's frame scope.the same one. If no shared adapter exists, add it to
src/render.rs— not tosrc/gtk/. Writing a GTK-only painter here would recreate the exact debt this issueretires (see the Platform-Neutrality Rule in
CLAUDE.md).src/gtk/draw.rshere — GTK live render path silently drops 13 populated ScreenLayout fields (rest of #587's blast radius) #592-D does that.⚠ The TUI line numbers in #592's table are pre-#634. The TUI cutover to
run_with_shellmoved those paint sites into
src/tui_main/shell_app.rs. Locate the current TUI call site bysymbol, not by the line numbers in that table.
Acceptance criteria
src/gtk/testing.rs,harness from Adopt quadraui's GtkDriver — vimcode has zero GTK black-box tests though the harness shipped in quadraui#301 #646) asserting on rendered output — not on
ScreenLayoutfieldpopulation.
KEYDBGline above is no longerthe only evidence it exists.
src/render.rs.cargo build && cargo testEXIT=0.Files
src/gtk/mod.rssrc/render.rssrc/gtk/testing.rsOut of scope
draw.rs(GTK live render path silently drops 13 populated ScreenLayout fields (rest of #587's blast radius) #592-D).