Give the User Guide real breathing room between paragraphs

Every paragraph, note and entry was a separate label stacked with only
egui's default item spacing between them, so sections didn't read as
clear breaks. Scope a larger item_spacing to the User Guide's own Ui
(not the shared section/note/body helpers) so the Markdown Cheatsheet,
which uses the same helpers, is unaffected.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-10-03 08:07:06 -05:00
parent 1cd560d954
commit 6627ae8000
+11 -4
View File
@@ -27,14 +27,20 @@ pub fn user_guide_window(ctx: &egui::Context, open: &mut bool) {
egui::Window::new("📖 User Guide") egui::Window::new("📖 User Guide")
.open(open) .open(open)
.resizable(true) .resizable(true)
.default_width(640.0) .default_width(720.0)
.default_height(620.0) .default_height(680.0)
.show(ctx, |ui| { .show(ctx, |ui| {
egui::ScrollArea::vertical().show(ui, user_guide_body); egui::ScrollArea::vertical().show(ui, user_guide_body);
}); });
} }
fn user_guide_body(ui: &mut egui::Ui) { fn user_guide_body(ui: &mut egui::Ui) {
// More breathing room than egui's default item spacing — scoped to this
// `Ui` (and so inherited by every child it lays out below), not to the
// shared `section`/`note`/`body`/`entries` helpers themselves, so the
// Markdown Cheatsheet's own window is unaffected.
ui.spacing_mut().item_spacing.y = 12.0;
intro( intro(
ui, ui,
"What every window, menu item and setting does. For markdown and \ "What every window, menu item and setting does. For markdown and \
@@ -604,7 +610,9 @@ fn syntax(ui: &mut egui::Ui, id: &str, rows: &[(&str, &str)]) {
/// rather than side by side — for descriptions too long to sit in /// rather than side by side — for descriptions too long to sit in
/// `syntax`'s two-column grid without either overflowing or forcing the /// `syntax`'s two-column grid without either overflowing or forcing the
/// whole window wider to avoid wrapping, since a `Grid` sizes each column to /// whole window wider to avoid wrapping, since a `Grid` sizes each column to
/// its widest cell instead of wrapping. /// its widest cell instead of wrapping. Relies on the caller's own
/// `item_spacing` for the gap between rows, rather than hand-adding one here
/// on top of it.
fn entries(ui: &mut egui::Ui, rows: &[(&str, &str)]) { fn entries(ui: &mut egui::Ui, rows: &[(&str, &str)]) {
for (label, desc) in rows { for (label, desc) in rows {
ui.label( ui.label(
@@ -613,6 +621,5 @@ fn entries(ui: &mut egui::Ui, rows: &[(&str, &str)]) {
.color(egui::Color32::from_rgb(120, 170, 120)), .color(egui::Color32::from_rgb(120, 170, 120)),
); );
ui.label(*desc); ui.label(*desc);
ui.add_space(6.0);
} }
} }