@@ -1224,6 +1224,10 @@ pub struct Builder<R: Runtime> {
1224
1224
#[ cfg( desktop) ]
1225
1225
menu : Option < Box < dyn FnOnce ( & AppHandle < R > ) -> crate :: Result < Menu < R > > + Send > > ,
1226
1226
1227
+ /// Menu event listeners for any menu event.
1228
+ #[ cfg( desktop) ]
1229
+ menu_event_listeners : Vec < GlobalMenuEventListener < AppHandle < R > > > ,
1230
+
1227
1231
/// Enable macOS default menu creation.
1228
1232
#[ allow( unused) ]
1229
1233
enable_macos_default_menu : bool ,
@@ -1293,6 +1297,8 @@ impl<R: Runtime> Builder<R> {
1293
1297
state : StateManager :: new ( ) ,
1294
1298
#[ cfg( desktop) ]
1295
1299
menu : None ,
1300
+ #[ cfg( desktop) ]
1301
+ menu_event_listeners : Vec :: new ( ) ,
1296
1302
enable_macos_default_menu : true ,
1297
1303
window_event_listeners : Vec :: new ( ) ,
1298
1304
webview_event_listeners : Vec :: new ( ) ,
@@ -1615,6 +1621,29 @@ tauri::Builder::default()
1615
1621
self
1616
1622
}
1617
1623
1624
+ /// Registers an event handler for any menu event.
1625
+ ///
1626
+ /// # Examples
1627
+ /// ```
1628
+ /// use tauri::menu::*;
1629
+ ///
1630
+ /// tauri::Builder::default()
1631
+ /// .on_menu_event(|app, event| {
1632
+ /// if event.id() == "quit" {
1633
+ /// app.exit(0);
1634
+ /// }
1635
+ /// });
1636
+ /// ```
1637
+ #[ must_use]
1638
+ #[ cfg( desktop) ]
1639
+ pub fn on_menu_event < F : Fn ( & AppHandle < R > , MenuEvent ) + Send + Sync + ' static > (
1640
+ mut self ,
1641
+ f : F ,
1642
+ ) -> Self {
1643
+ self . menu_event_listeners . push ( Box :: new ( f) ) ;
1644
+ self
1645
+ }
1646
+
1618
1647
/// Enable or disable the default menu on macOS. Enabled by default.
1619
1648
///
1620
1649
/// # Examples
@@ -1820,6 +1849,8 @@ tauri::Builder::default()
1820
1849
self . on_page_load ,
1821
1850
self . uri_scheme_protocols ,
1822
1851
self . state ,
1852
+ #[ cfg( desktop) ]
1853
+ self . menu_event_listeners ,
1823
1854
self . window_event_listeners ,
1824
1855
self . webview_event_listeners ,
1825
1856
#[ cfg( desktop) ]
0 commit comments