Skip to content

Commit

Permalink
fix(linux): fix mnemonics for submenus (#650)
Browse files Browse the repository at this point in the history
* fix(linux): fix mnemonics for submenus

* Update menu.rs
  • Loading branch information
amrbashir committed Dec 20, 2022
1 parent dc7cdc7 commit 77569c8
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 10 deletions.
5 changes: 5 additions & 0 deletions .changes/fix-mnemonics-linux.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"tao": "patch"
---

On Linux, Fix mnemonics for submenus.
12 changes: 6 additions & 6 deletions examples/custom_menu.rs
Original file line number Diff line number Diff line change
Expand Up @@ -52,18 +52,18 @@ fn main() {
first_menu.add_native_item(MenuItem::Services);

// Create custom Copy menu with our clipboard object
let custom_insert_clipboard = first_menu.add_item(MenuItemAttributes::new("Insert clipboard"));
let custom_read_clipboard = first_menu.add_item(MenuItemAttributes::new("Read clipboard"));
let custom_insert_clipboard = first_menu.add_item(MenuItemAttributes::new("&Insert clipboard"));
let custom_read_clipboard = first_menu.add_item(MenuItemAttributes::new("&Read clipboard"));

// add `my_sub_menu` children of `first_menu` with `Sub menu` title
first_menu.add_submenu("Sub menu", true, my_sub_menu);
first_menu.add_submenu("&Sub menu", true, my_sub_menu);
first_menu.add_native_item(MenuItem::CloseWindow);
first_menu.add_native_item(MenuItem::Hide);
first_menu.add_native_item(MenuItem::Quit);

// create custom item `Selected and disabled` children of `second_menu`
second_menu.add_item(
MenuItemAttributes::new("Selected and disabled")
MenuItemAttributes::new("Selected &and disabled")
.with_selected(true)
.with_enabled(false),
);
Expand All @@ -78,8 +78,8 @@ fn main() {
);

// add all our childs to menu_bar_menu (order is how they'll appear)
menu_bar_menu.add_submenu("My app", true, first_menu);
menu_bar_menu.add_submenu("Other menu", true, second_menu);
menu_bar_menu.add_submenu("&My app", true, first_menu);
menu_bar_menu.add_submenu("&Other menu", true, second_menu);

let window = WindowBuilder::new()
.with_title("A fantastic window!")
Expand Down
9 changes: 5 additions & 4 deletions src/platform_impl/linux/menu.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,8 @@ use crate::{

macro_rules! menuitem {
( $description:expr, $key:expr, $accel_group:ident, $window_id:expr, $native_menu_item:expr, $tx:ident ) => {{
let item = GtkMenuItem::with_label($description);
let title = to_gtk_mnemonic($description);
let item = GtkMenuItem::with_mnemonic(&title);
if !$key.is_empty() {
let (key, mods) = gtk::accelerator_parse($key);
item.add_accelerator("activate", $accel_group, key, mods, AccelFlags::VISIBLE);
Expand Down Expand Up @@ -132,11 +133,11 @@ impl Menu {
) -> CustomMenuItem {
let title = to_gtk_mnemonic(&title);
let gtk_item = if selected {
let item = CheckMenuItem::with_label(&title);
let item = CheckMenuItem::with_mnemonic(&title);
item.set_active(true);
item.upcast::<GtkMenuItem>()
} else {
GtkMenuItem::with_label(&title)
GtkMenuItem::with_mnemonic(&title)
};
let custom_menu = MenuItemAttributes {
id: menu_id,
Expand Down Expand Up @@ -215,7 +216,7 @@ impl Menu {
}),
..
} => {
let item = GtkMenuItem::with_label(&title);
let item = GtkMenuItem::with_mnemonic(&to_gtk_mnemonic(title));
item.set_sensitive(enabled);
item.set_submenu(Some(&menu.into_gtkmenu(tx, accel_group, window_id)));
Some(item)
Expand Down

0 comments on commit 77569c8

Please sign in to comment.