From 00195e8d2825360b1bbf8d13629bb8567e913ee5 Mon Sep 17 00:00:00 2001 From: Marco Arnulfo Date: Tue, 13 Oct 2026 02:16:33 +0200 Subject: [PATCH] Keyboard Shortcuts: Duplicate is listed, so it can be given a shortcut (fixes #1539) --- crates/engine/src/cmd/edit.rs | 10 +++++++++- crates/ui-egui/src/shortcut_editor.rs | 9 +++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/crates/engine/src/cmd/edit.rs b/crates/engine/src/cmd/edit.rs index 081e5888..9ca8f6e9 100644 --- a/crates/engine/src/cmd/edit.rs +++ b/crates/engine/src/cmd/edit.rs @@ -132,7 +132,15 @@ pub fn specs() -> Vec { has_selection_or_guides, clear ), - cmd!("edit.duplicate", "Duplicate", [], None, "{dx?, dy?} duplicate the selection in place (offset optional)", has_selection, duplicate), + cmd!( + "edit.duplicate", + "Duplicate", + ["Edit"], + None, + "{dx?, dy?} duplicate the selection in place (offset optional)", + has_selection, + duplicate + ), ] } diff --git a/crates/ui-egui/src/shortcut_editor.rs b/crates/ui-egui/src/shortcut_editor.rs index 605644e7..1fb0c2c7 100644 --- a/crates/ui-egui/src/shortcut_editor.rs +++ b/crates/ui-egui/src/shortcut_editor.rs @@ -955,4 +955,13 @@ mod tests { let mut seen = HashSet::new(); assert!(entries().iter().all(|e| seen.insert(e.key.clone())), "duplicate entries"); } + + #[test] + fn duplicate_can_be_given_a_shortcut() { + // Duplicate has no default chord (#1539): it must still be listed so one can be set. + assert_eq!(entry("edit.duplicate").map(|e| e.group.as_str()), Some("Edit")); + let mut ov = BTreeMap::new(); + assign(&mut ov, "edit.duplicate", Some("Cmd+Alt+Shift+F8"), false).unwrap(); + assert_eq!(effective_in(&ov, "edit.duplicate").as_deref(), Some("Cmd+Alt+Shift+F8")); + } }