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 1/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 five editor overlay popups from the orphaned src/gtk/draw.rs path onto the live GTK ShellApp::render_content path, so GTK paints them again.
screen.* field
dead GTK site
TUI reference
completion
draw.rs:1332
quadraui_tui::draw_completions
hover
draw.rs:1406
—
editor_hover
draw.rs:1552
render_editor_hover_popup
diff_peek
draw.rs:1697
—
signature_help
draw.rs:1792
—
Why this group
All five are popup-shaped surfaces the engine already populates and TUI already paints
through a quadraui primitive (Completions, Tooltip, RichTextPopup). They share a
paint idiom, so porting them together is one pattern applied five times rather than five
investigations. They are also the five most visible: on GTK today, completion, hover,
signature help and diff peek simply do not appear, with no error.
Design
These fields are already populated on the GTK path — the engine computes them and ScreenLayout carries them. Nothing needs computing; this is purely a missing paint call.
Mirror what TUI does: read the field off ScreenLayout, build the quadraui primitive via
the existing shared adapter in render.rs, and call the corresponding Backend::draw_*
inside render_content's frame scope. Do not re-derive geometry per backend.
If a needed adapter turns out to live only inside draw.rs, lift it to render.rs rather
than copying it — that is the whole point of the issue.
⚠ 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.
Each test fails if its paint call is removed. State in the PR how you verified that.
No new per-backend geometry or layout logic — every draw_* call goes through an existing
shared adapter. New adapters land in src/render.rs, not in src/gtk/.
Sub-task 1/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 five editor overlay popups from the orphaned
src/gtk/draw.rspath onto the live GTKShellApp::render_contentpath, so GTK paints them again.screen.*fieldcompletiondraw.rs:1332quadraui_tui::draw_completionshoverdraw.rs:1406editor_hoverdraw.rs:1552render_editor_hover_popupdiff_peekdraw.rs:1697signature_helpdraw.rs:1792Why this group
All five are popup-shaped surfaces the engine already populates and TUI already paints
through a quadraui primitive (
Completions,Tooltip,RichTextPopup). They share apaint idiom, so porting them together is one pattern applied five times rather than five
investigations. They are also the five most visible: on GTK today, completion, hover,
signature help and diff peek simply do not appear, with no error.
Design
ScreenLayoutcarries them. Nothing needs computing; this is purely a missing paint call.ScreenLayout, build the quadraui primitive viathe existing shared adapter in
render.rs, and call the correspondingBackend::draw_*inside
render_content's frame scope. Do not re-derive geometry per backend.draw.rs, lift it torender.rsratherthan copying it — that is the whole point of the issue.
src/gtk/draw.rshere. It is the reference implementation the latersub-tasks port from; GTK live render path silently drops 13 populated ScreenLayout fields (rest of #587's blast radius) #592-D deletes it once nothing needs it.
⚠ 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) that assert on rendered pixels/painted content — not by asserting the
ScreenLayoutfield is populated, which is already true today and is exactly why this bugwent unnoticed.
draw_*call goes through an existingshared adapter. New adapters land in
src/render.rs, not insrc/gtk/.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).Ctrl+V/UiEvent::ClipboardPastegap — that is Ctrl+V paste silently does nothing on GTK — quadraui swallows the key, vimcode has no ClipboardPaste handler #593, same root cause, different fix.