From b408b709863f4c9c4e968efa43f42e7f79228e69 Mon Sep 17 00:00:00 2001 From: AnhNgoo <110978888+AnhNgoo@users.noreply.github.com> Date: Mon, 2 Nov 2026 13:43:29 +0700 Subject: [PATCH] fix(ui): preserve alignment shortcuts for CLI consumers --- crates/engine/src/cmd.rs | 10 +++++++++- crates/engine/src/cmd/format.rs | 4 ++-- crates/ui-egui/tests/it/dialog_focus.rs | 4 +++- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/crates/engine/src/cmd.rs b/crates/engine/src/cmd.rs index 9ef498ea9..99da8f67b 100644 --- a/crates/engine/src/cmd.rs +++ b/crates/engine/src/cmd.rs @@ -64,7 +64,15 @@ pub struct CommandInfo { impl CommandInfo { /// Format the portable shortcut notation for the runtime operating system. pub fn shortcut_for_platform(&self, mac: bool) -> Option { - let keys = if mac { self.shortcut_mac.or(self.shortcut) } else { self.shortcut }?; + let keys = if mac { + self.shortcut_mac.or(self.shortcut) + } else if self.shortcut_mac.is_some() && self.shortcut_mac == self.shortcut { + // An identical Mac override marks a Mac-only display shortcut. + // The portable field remains unchanged for legacy CLI consumers. + None + } else { + self.shortcut + }?; if mac { return Some(keys.to_owned()); } diff --git a/crates/engine/src/cmd/format.rs b/crates/engine/src/cmd/format.rs index 166afc72d..d8b453891 100644 --- a/crates/engine/src/cmd/format.rs +++ b/crates/engine/src/cmd/format.rs @@ -89,11 +89,11 @@ pub fn specs() -> Vec { // Alignment CommandSpec { shortcut_mac: Some("Cmd+L"), - ..cmd!("home.alignLeft", "Align Left", ["Home", "Alignment"], None, "{range?}", has_doc, |s, p| halign(s, p, HAlign::Left)) + ..cmd!("home.alignLeft", "Align Left", ["Home", "Alignment"], Some("Cmd+L"), "{range?}", has_doc, |s, p| halign(s, p, HAlign::Left)) }, CommandSpec { shortcut_mac: Some("Cmd+E"), - ..cmd!("home.alignCenter", "Center", ["Home", "Alignment"], None, "{range?}", has_doc, |s, p| halign(s, p, HAlign::Center)) + ..cmd!("home.alignCenter", "Center", ["Home", "Alignment"], Some("Cmd+E"), "{range?}", has_doc, |s, p| halign(s, p, HAlign::Center)) }, cmd!("home.alignRight", "Align Right", ["Home", "Alignment"], None, "{range?}", has_doc, |s, p| halign(s, p, HAlign::Right)), cmd!("home.justify", "Justify", ["Home", "Alignment"], None, "{range?}", has_doc, |s, p| halign(s, p, HAlign::Justify)), diff --git a/crates/ui-egui/tests/it/dialog_focus.rs b/crates/ui-egui/tests/it/dialog_focus.rs index 33cb26b7f..ca3bfe925 100644 --- a/crates/ui-egui/tests/it/dialog_focus.rs +++ b/crates/ui-egui/tests/it/dialog_focus.rs @@ -177,7 +177,9 @@ fn command_palette_shortcuts_come_from_engine_metadata() { assert_eq!(command.shortcut_for_platform(false), other.map(str::to_string), "{id}: Windows/Linux"); } - for (id, legacy) in [("data.group", "Alt+Shift+Right"), ("data.ungroup", "Alt+Shift+Left")] { + for (id, legacy) in + [("data.group", "Alt+Shift+Right"), ("data.ungroup", "Alt+Shift+Left"), ("home.alignLeft", "Cmd+L"), ("home.alignCenter", "Cmd+E")] + { let command = commands.iter().find(|c| c.id == id).unwrap(); assert_eq!(command.shortcut, Some(legacy), "{id}: legacy CLI shortcut"); }