From 37d69f0449854f58e9b43bf521a162613428e001 Mon Sep 17 00:00:00 2001 From: Sazid Al Bayazid Date: Sun, 18 Oct 2026 14:12:49 +0600 Subject: [PATCH] Tests: Ctrl+A in the slide sorter selects every slide (#936) The sorter's Ctrl+A runs edit.selectAll with the slides scope, so every slide in the deck is selected, as in PowerPoint. Nothing covered the key press itself, so a change to the shortcut could have dropped the scope. The kittest covers the whole way: the key press, the scope and the selection it leaves behind. Red-proof: with the sorter's Ctrl+A no longer asking for the slides scope, the selection stays at the one current slide and the test fails. ROADMAP progress-log row added. --- ROADMAP.md | 1 + crates/ui-egui/src/sorter_tests.rs | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/ROADMAP.md b/ROADMAP.md index 93bc931e..3de6811d 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -137,6 +137,7 @@ app's JSON control channel (`deckcraft --control PORT`). | 2026-10-17 | Edit Points: turning a shape into a freeform is one undo step, so Undo brings the original shape back (it used to stay a freeform) | | 2026-10-17 | While a placeholder's text is being edited, a click on a shape in front of it selects that shape instead of moving the caret, as in PowerPoint (#931) | | 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: 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"); +}