浏览代码

fix(core): initialize system tray before app windows

Lucas Nogueira 3 年之前
父节点
当前提交
dbe0d21b6f
共有 2 个文件被更改,包括 28 次插入23 次删除
  1. 5 0
      .changes/fix-tray-command.md
  2. 23 23
      core/tauri/src/app.rs

+ 5 - 0
.changes/fix-tray-command.md

@@ -0,0 +1,5 @@
+---
+"tauri": patch
+---
+
+Initialize system tray before windows so `tray_handle` can be accessed on command handlers.

+ 23 - 23
core/tauri/src/app.rs

@@ -914,29 +914,6 @@ impl<R: Runtime> Builder<R> {
       },
     };
 
-    app.manager.initialize_plugins(&app.handle())?;
-
-    let pending_labels = self
-      .pending_windows
-      .iter()
-      .map(|p| p.label.clone())
-      .collect::<Vec<_>>();
-
-    #[cfg(feature = "updater")]
-    let mut main_window = None;
-
-    for pending in self.pending_windows {
-      let pending = app
-        .manager
-        .prepare_window(app.handle.clone(), pending, &pending_labels)?;
-      let detached = app.runtime.as_ref().unwrap().create_window(pending)?;
-      let _window = app.manager.attach_window(app.handle(), detached);
-      #[cfg(feature = "updater")]
-      if main_window.is_none() {
-        main_window = Some(_window);
-      }
-    }
-
     #[cfg(feature = "system-tray")]
     if let Some(system_tray) = self.system_tray {
       let mut ids = HashMap::new();
@@ -1027,6 +1004,29 @@ impl<R: Runtime> Builder<R> {
       }
     }
 
+    app.manager.initialize_plugins(&app.handle())?;
+
+    let pending_labels = self
+      .pending_windows
+      .iter()
+      .map(|p| p.label.clone())
+      .collect::<Vec<_>>();
+
+    #[cfg(feature = "updater")]
+    let mut main_window = None;
+
+    for pending in self.pending_windows {
+      let pending = app
+        .manager
+        .prepare_window(app.handle.clone(), pending, &pending_labels)?;
+      let detached = app.runtime.as_ref().unwrap().create_window(pending)?;
+      let _window = app.manager.attach_window(app.handle(), detached);
+      #[cfg(feature = "updater")]
+      if main_window.is_none() {
+        main_window = Some(_window);
+      }
+    }
+
     (self.setup)(&mut app).map_err(|e| crate::Error::Setup(e))?;
 
     #[cfg(feature = "updater")]