6c30edaf3e
Executes the four high-priority items from PLAN §17.4 backlog,
bringing all 4 of the remaining bespoke dialog surfaces onto the
unified render_popup / render_button_row path.
P1 (HIGH) widget/dialog.rs — Dialog::render now delegates the
shell to terminal::popup::render_popup instead of building
its own raw Clear + Block. This closes the only shadow
regression in the unified stack: Dialog::info / confirm /
confirm_all now inherit MC-matching rounded borders +
drop shadow + Clear + skin-driven palette, identical to
every other migrated dialog. New test
render_draws_drop_shadow_at_bottom_right_corner asserts the
shadow bg is painted at the popup's bottom-right cell.
P2 (HIGH) overwrite_dialog.rs — Y/N/All/Skip/Abort legend replaced
by 5-element render_button_row (Yes=Default, No=All,
SkipAll, Abort=Normal). Was 40 lines of hand-rolled Span
with hand-picked theme.executable / theme.error /
theme.title_bg / theme.warning colors. New test
render_uses_mc_bracket_button_shapes asserts Default uses
'[<' / '>]' brackets and Normal uses '[ ' / ' ]'.
P3 (MED) confirm_dialog.rs — '[ Save ] [ Cancel ]' Paragraph
replaced by 2-element render_button_row (Save=Default,
Cancel=Normal). New test asserts the same MC bracket shapes.
P4 (MED) editor/menubar.rs — F9 dropdown migrated to render_popup,
matching the already-migrated filemanager/menubar.rs
dropdown (committed in c032c9a787). Top menu bar (full-width
by design) intentionally untouched.
Acceptance criterion from §17.6 is met: grep for raw Clear returns
exactly 4 sites, all defensible:
- terminal/popup.rs (the renderer itself)
- filemanager/tree.rs (full-screen, intentional)
- filemanager/menubar.rs top bar (intentional full-width)
- editor/menubar.rs top bar (intentional full-width)
widget/dialog.rs no longer contains a raw Clear.
Tests: 1184 passing, 0 failing (was 1180; +4 new). Both release
builds (default + --features sftp) clean.