diff --git a/ROADMAP.md b/ROADMAP.md index 1c16c080..52a08e65 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -159,6 +159,7 @@ app's JSON control channel (`deckcraft --control PORT`). | 2026-10-16 | Symbol-font characters: a run's U+F0xx symbol code (from ``) now draws from the installed Symbol face even when it has no private-use mapping — Apple's Symbol on macOS maps the glyphs to real Unicode, so the code is remapped to that character (the Adobe Symbol encoding) instead of falling to a look-alike. Bullets and metafile text take the same remap | | 2026-10-15 | Native saves keep an imported chart's embedded workbook, drawings and relationships; headless PPTX → edit → native save/reopen → PPTX tests verify the payloads and stale-workbook rejection | | 2026-10-20 | Tests: the Options dialog's Cancel, Esc and close button put the settings back the way they were (#878) | +| 2026-10-20 | Tests: Ctrl+A in the slide sorter selects every slide, as in PowerPoint (#936) | | 2026-10-15 | PPTX trigger sequences keep separate On Click steps, including paragraph builds; synthetic import/edit/save/reopen and headless show regressions | | 2026-10-16 | Export: PNG with a transparent background — the slide background is left out, only the slide's content is drawn (Export… dialog, File › Export, web download, `file.export`/`file.render` `transparentBackground`, `deckcraft-cli render --transparent`) (#784) | | 2026-10-16 | Arrange ▸ Align: Align to Slide and Align Selected Objects, as in PowerPoint. One object aligns to the slide and several to each other until the other choice is ticked; the choice holds for that selection and also drives Distribute | diff --git a/crates/ui-egui/src/sorter_tests.rs b/crates/ui-egui/src/sorter_tests.rs index 3ab3d215..c4c4b9af 100644 --- a/crates/ui-egui/src/sorter_tests.rs +++ b/crates/ui-egui/src/sorter_tests.rs @@ -169,3 +169,13 @@ fn dragging_a_section_moves_it_and_keeps_it_collapsed() { let (beta, alpha) = (h.get_by_label("Beta").rect(), h.get_by_label("Alpha").rect()); assert!(beta.top() < alpha.top()); } + +#[test] +fn ctrl_a_selects_every_slide() { + let mut h = harness(false); + h.key_combination_modifiers(egui::Modifiers::COMMAND, &[egui::Key::A]); + h.run_steps(2); + let st = h.state().session.active().unwrap(); + let all = st.doc.slides.len(); + assert_eq!(st.selection.slides.len(), all, "Ctrl+A in the sorter selects every slide"); +}