From 380be36ac30bafb0d76fb3350e6c863d26f3320b Mon Sep 17 00:00:00 2001 From: aiongg Date: Mon, 26 Oct 2026 03:33:34 +0000 Subject: [PATCH] G1: the W, W key tip opens Switch Windows through its control --- crates/ui-egui/src/keytips/keytip_table/generated.rs | 2 +- crates/ui-egui/src/keytips/keytips.json | 2 +- crates/ui-egui/src/ribbon.rs | 2 +- crates/ui-egui/tests/it/keytips_generated.rs | 3 ++- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/crates/ui-egui/src/keytips/keytip_table/generated.rs b/crates/ui-egui/src/keytips/keytip_table/generated.rs index c35a3bbad..ef0011861 100644 --- a/crates/ui-egui/src/keytips/keytip_table/generated.rs +++ b/crates/ui-egui/src/keytips/keytip_table/generated.rs @@ -356,7 +356,7 @@ pub const SEQUENCES: &[(&str, Entry)] = &[ ("WVH", Entry::Finish(Action::Command("view.headings"))), // Excel: Toggle Headings; containment(Headings) ("WVN", Entry::Finish(Action::Pending("view.navigation"))), // pending; Excel: Navigation; Navigation pane; reserved until the command lands ("WVR", Entry::Finish(Action::Command("view.ruler"))), // Excel: Ruler - ("WW", Entry::Finish(Action::Command("view.switchWindows"))), // Excel: Switch Windows + ("WW", Entry::Finish(Action::Control("view.switchWindows"))), // Excel: Switch Windows ("JAM", Entry::Finish(Action::Command("chart.formatSelection"))), // Excel: Chart format: Format Selection pane; containment(Format Selection) ("JCA", Entry::Finish(Action::Command("chart.addElement"))), // Excel: Chart: Add Chart Element; containment(Add Chart Element) ("JCC", Entry::Finish(Action::Command("chart.changeType"))), // Excel: Chart: Change Chart Type; containment(Change Chart Type) diff --git a/crates/ui-egui/src/keytips/keytips.json b/crates/ui-egui/src/keytips/keytips.json index 5be64f867..f0e2c8f99 100644 --- a/crates/ui-egui/src/keytips/keytips.json +++ b/crates/ui-egui/src/keytips/keytips.json @@ -2471,7 +2471,7 @@ }, { "seq": "WW", - "kind": "command", + "kind": "control", "target": "view.switchWindows", "excel": "Switch Windows", "note": "" diff --git a/crates/ui-egui/src/ribbon.rs b/crates/ui-egui/src/ribbon.rs index cb1573c1f..673cb6b3b 100644 --- a/crates/ui-egui/src/ribbon.rs +++ b/crates/ui-egui/src/ribbon.rs @@ -2602,7 +2602,7 @@ fn switch_windows(app: &mut SheetApp, ui: &mut Ui) { let anchor = big_button(ui, Icon::Book, "Switch\nWindows", "Switch Windows", true); anchor.widget_info(|| egui::WidgetInfo::labeled(egui::Role::Button, ui.is_enabled(), "Switch Windows")); control_keytip(app, ui, &anchor, "view.switchWindows"); - let forced = std::mem::take(&mut app.open_switch_windows); + let forced = std::mem::take(&mut app.open_switch_windows) | invoke(app, "view.switchWindows"); egui::Popup::menu(&anchor).open_memory(popup_command(forced, anchor.clicked())).show(|ui| { for w in app.open_windows() { let label = theme::available_text(ui, &format!("{}{}", if w.active { "✓ " } else { " " }, w.label())); diff --git a/crates/ui-egui/tests/it/keytips_generated.rs b/crates/ui-egui/tests/it/keytips_generated.rs index 498c1a5d8..a22fabc98 100644 --- a/crates/ui-egui/tests/it/keytips_generated.rs +++ b/crates/ui-egui/tests/it/keytips_generated.rs @@ -2647,7 +2647,8 @@ fn keytip_wvr_() { fn keytip_ww_() { let mut h = harness(blank()); sequence(&mut h, "WW", false); - assert!(h.state().session.journal.iter().any(|(id, _)| id == "view.switchWindows"), "WW must journal view.switchWindows"); + assert!(h.state().message.is_none() && h.state().toast.is_none(), "WW must route to its control without an error box"); + assert_eq!(h.state().keytips.prefix(), None); } #[test]