Selaa lähdekoodia

fix(tauri-runtime-wry): tray event listener not registered (#6270)

Lucas Fernandes Nogueira 2 vuotta sitten
vanhempi
sitoutus
b9c303a0dc
2 muutettua tiedostoa jossa 12 lisäystä ja 2 poistoa
  1. 6 0
      .changes/fix-tray-events.md
  2. 6 2
      core/tauri-runtime-wry/src/lib.rs

+ 6 - 0
.changes/fix-tray-events.md

@@ -0,0 +1,6 @@
+---
+"tauri-runtime-wry": patch
+"tauri": patch
+---
+
+Fixes tray events not being delivered.

+ 6 - 2
core/tauri-runtime-wry/src/lib.rs

@@ -2647,14 +2647,18 @@ fn handle_user_message<T: UserEvent>(
     Message::Tray(tray_id, tray_message) => {
       let mut trays = system_tray_manager.trays.lock().unwrap();
 
-      if let TrayMessage::Create(tray, tx) = tray_message {
+      if let TrayMessage::Create(mut tray, tx) = tray_message {
+        let mut listeners = Vec::new();
+        if let Some(l) = tray.on_event.take() {
+          listeners.push(Arc::new(l));
+        }
         match create_tray(WryTrayId(tray_id), tray, event_loop) {
           Ok((tray, items)) => {
             trays.insert(
               tray_id,
               TrayContext {
                 tray: Arc::new(Mutex::new(Some(tray))),
-                listeners: Default::default(),
+                listeners: Arc::new(Mutex::new(listeners)),
                 items: Arc::new(Mutex::new(items)),
               },
             );