Skip to content

Commit 5d1745a

Browse files
authored
Add cmd-q shortcut on macOS (#270)
1 parent 615c758 commit 5d1745a

File tree

1 file changed

+32
-1
lines changed

1 file changed

+32
-1
lines changed

lan-mouse-gtk/src/lib.rs

+32-1
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,11 @@ fn gtk_main() -> glib::ExitCode {
4949
.application_id("de.feschber.LanMouse")
5050
.build();
5151

52-
app.connect_startup(|_| load_icons());
52+
app.connect_startup(|app| {
53+
load_icons();
54+
setup_actions(app);
55+
setup_menu(app);
56+
});
5357
app.connect_activate(build_ui);
5458

5559
let args: Vec<&'static str> = vec![];
@@ -62,6 +66,33 @@ fn load_icons() {
6266
icon_theme.add_resource_path("/de/feschber/LanMouse/icons");
6367
}
6468

69+
// Add application actions
70+
fn setup_actions(app: &adw::Application) {
71+
// Quit action
72+
// This is important on macOS, where users expect a File->Quit action with a Cmd+Q shortcut.
73+
let quit_action = gio::SimpleAction::new("quit", None);
74+
quit_action.connect_activate({
75+
let app = app.clone();
76+
move |_, _| {
77+
app.quit();
78+
}
79+
});
80+
app.add_action(&quit_action);
81+
}
82+
83+
// Set up a global menu
84+
//
85+
// Currently this is used only on macOS
86+
fn setup_menu(app: &adw::Application) {
87+
let menu = gio::Menu::new();
88+
89+
let file_menu = gio::Menu::new();
90+
file_menu.append(Some("Quit"), Some("app.quit"));
91+
menu.append_submenu(Some("_File"), &file_menu);
92+
93+
app.set_menubar(Some(&menu))
94+
}
95+
6596
fn build_ui(app: &Application) {
6697
log::debug!("connecting to lan-mouse-socket");
6798
let (mut frontend_rx, frontend_tx) = match lan_mouse_ipc::connect() {

0 commit comments

Comments
 (0)