@@ -26,11 +26,16 @@ use tao::{
2626use wry:: WebViewBuilderExtUnix ;
2727use wry:: { http:: Request , WebViewBuilder } ;
2828
29+ enum UserEvent {
30+ MenuEvent ( muda:: MenuEvent ) ,
31+ }
32+
2933fn main ( ) -> wry:: Result < ( ) > {
30- let mut event_loop_builder = EventLoopBuilder :: new ( ) ;
34+ let mut event_loop_builder = EventLoopBuilder :: < UserEvent > :: with_user_event ( ) ;
3135
3236 let menu_bar = Menu :: new ( ) ;
3337
38+ // setup accelerator handler on Windows
3439 #[ cfg( target_os = "windows" ) ]
3540 {
3641 let menu_bar = menu_bar. clone ( ) ;
@@ -46,6 +51,12 @@ fn main() -> wry::Result<()> {
4651
4752 let event_loop = event_loop_builder. build ( ) ;
4853
54+ // set a menu event handler that wakes up the event loop
55+ let proxy = event_loop. create_proxy ( ) ;
56+ muda:: MenuEvent :: set_event_handler ( Some ( move |event| {
57+ proxy. send_event ( UserEvent :: MenuEvent ( event) ) ;
58+ } ) ) ;
59+
4960 let window = WindowBuilder :: new ( )
5061 . with_title ( "Window 1" )
5162 . build ( & event_loop)
@@ -281,24 +292,19 @@ fn main() -> wry::Result<()> {
281292 event_loop. run ( move |event, _, control_flow| {
282293 * control_flow = ControlFlow :: Wait ;
283294
284- if let Event :: WindowEvent {
285- event : WindowEvent :: CloseRequested ,
286- ..
287- } = event
288- {
289- * control_flow = ControlFlow :: Exit ;
290- }
295+ match event {
296+ Event :: WindowEvent {
297+ event : WindowEvent :: CloseRequested ,
298+ ..
299+ } => * control_flow = ControlFlow :: Exit ,
291300
292- if let Ok ( event) = menu_channel. try_recv ( ) {
293- if event. id == custom_i_1. id ( ) {
294- custom_i_1
295- . set_accelerator ( Some ( Accelerator :: new ( Some ( Modifiers :: SHIFT ) , Code :: KeyF ) ) )
296- . unwrap ( ) ;
297- file_m
298- . insert ( & MenuItem :: new ( "New Menu Item" , true , None ) , 2 )
299- . unwrap ( ) ;
301+ Event :: UserEvent ( UserEvent :: MenuEvent ( event) ) => {
302+ if event. id == custom_i_1. id ( ) {
303+ file_m. insert ( & MenuItem :: new ( "New Menu Item" , true , None ) , 2 ) ;
304+ }
305+ println ! ( "{event:?}" ) ;
300306 }
301- println ! ( "{event:?}" ) ;
307+ _ => { }
302308 }
303309 } )
304310}
0 commit comments