From ffbab0136f235aaaef01f77d6a2946c616aabedb Mon Sep 17 00:00:00 2001 From: Zander Brown Date: Sun, 27 May 2018 15:48:27 +0100 Subject: [PATCH] Bind F10 to open the menu Because we aren't using app-menu accels aren't automatically binded --- hammond-gtk/resources/gtk/headerbar.ui | 8 ++------ hammond-gtk/src/app.rs | 10 ++++++++++ hammond-gtk/src/headerbar.rs | 12 ++++++++---- 3 files changed, 20 insertions(+), 10 deletions(-) diff --git a/hammond-gtk/resources/gtk/headerbar.ui b/hammond-gtk/resources/gtk/headerbar.ui index a450d4f..4bdb777 100644 --- a/hammond-gtk/resources/gtk/headerbar.ui +++ b/hammond-gtk/resources/gtk/headerbar.ui @@ -257,12 +257,12 @@ Tobias Bernard - + True True False center - menu_popover + True True @@ -281,8 +281,4 @@ Tobias Bernard - - False - menu_toggle - \ No newline at end of file diff --git a/hammond-gtk/src/app.rs b/hammond-gtk/src/app.rs index cc4e4bd..0a0dd7c 100644 --- a/hammond-gtk/src/app.rs +++ b/hammond-gtk/src/app.rs @@ -75,6 +75,7 @@ impl App { })); })); app.add_action(&refresh); + app.set_accels_for_action("app.refresh", &["r"]); let import = SimpleAction::new("import", None); import.connect_activate(clone!(sender, app => move |_, _| { @@ -93,6 +94,9 @@ impl App { let quit = SimpleAction::new("quit", None); quit.connect_activate(clone!(app => move |_, _| app.quit())); app.add_action(&quit); + app.set_accels_for_action("app.quit", &["q"]); + + app.set_accels_for_action("win.menu", &["F10"]); app.connect_activate(clone!(sender, settings, receiver => move |app| { // Get the current window (if any) @@ -119,6 +123,12 @@ impl App { // Create the headerbar let header = Rc::new(Header::new(&content, &window, &sender)); + let menu = SimpleAction::new("menu", None); + menu.connect_activate(clone!(header => move |_, _| { + header.open_menu(); + })); + window.add_action(&menu); + // Add the content main stack to the overlay. let overlay = gtk::Overlay::new(); overlay.add(&content.get_stack()); diff --git a/hammond-gtk/src/headerbar.rs b/hammond-gtk/src/headerbar.rs index cca65b4..3929ca7 100644 --- a/hammond-gtk/src/headerbar.rs +++ b/hammond-gtk/src/headerbar.rs @@ -26,7 +26,7 @@ pub struct Header { update_box: gtk::Box, update_label: gtk::Label, update_spinner: gtk::Spinner, - menu_popover: gtk::Popover, + menu_button: gtk::MenuButton, app_menu: MenuModel, } @@ -42,7 +42,7 @@ impl Default for Header { let update_box = builder.get_object("update_notification").unwrap(); let update_label = builder.get_object("update_label").unwrap(); let update_spinner = builder.get_object("update_spinner").unwrap(); - let menu_popover = builder.get_object("menu_popover").unwrap(); + let menu_button = builder.get_object("menu_button").unwrap(); let menus = gtk::Builder::new_from_resource("/org/gnome/Hammond/gtk/menus.ui"); let app_menu = menus.get_object("menu").unwrap(); @@ -55,7 +55,7 @@ impl Default for Header { update_box, update_label, update_spinner, - menu_popover, + menu_button, app_menu, } } @@ -120,7 +120,7 @@ impl Header { }), ); - self.menu_popover.bind_model(Some(&self.app_menu), None); + self.menu_button.set_menu_model(Some(&self.app_menu)); } pub fn switch_to_back(&self, title: &str) { @@ -155,6 +155,10 @@ impl Header { self.update_spinner.hide(); self.update_label.hide(); } + + pub fn open_menu(&self) { + self.menu_button.clicked(); + } } // FIXME: THIS ALSO SUCKS!