diff --git a/.changes/fix-js-set-icon-tray-menu.md b/.changes/fix-js-set-icon-tray-menu.md new file mode 100644 index 000000000..2a1ccc057 --- /dev/null +++ b/.changes/fix-js-set-icon-tray-menu.md @@ -0,0 +1,5 @@ +--- +tauri: "patch:bug" +--- + +Fix a regression that the JavaScript API can no longer set menus and icons for tray icons diff --git a/Cargo.lock b/Cargo.lock index 376236faa..57bc87caf 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -10768,9 +10768,9 @@ checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" [[package]] name = "wry" -version = "0.52.0" +version = "0.52.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b08db04817a654a7e3339647d9cf8b497ed9ddcd4ec7cfda5a3a220c10a3bba3" +checksum = "12a714d9ba7075aae04a6e50229d6109e3d584774b99a6a8c60de1698ca111b9" dependencies = [ "base64 0.22.1", "block2 0.6.0", diff --git a/crates/tauri/src/tray/plugin.rs b/crates/tauri/src/tray/plugin.rs index 32d33c9f0..dfba77430 100644 --- a/crates/tauri/src/tray/plugin.rs +++ b/crates/tauri/src/tray/plugin.rs @@ -110,13 +110,15 @@ fn remove_by_id(app: AppHandle, id: &str) -> crate::Result<()> { #[command(root = "crate")] fn set_icon( app: AppHandle, + webview: Webview, rid: ResourceId, icon: Option, ) -> crate::Result<()> { let resources_table = app.resources_table(); let tray = resources_table.get::>(rid)?; + let webview_resources_table = webview.resources_table(); let icon = match icon { - Some(i) => Some(i.into_img(&resources_table)?.as_ref().clone()), + Some(i) => Some(i.into_img(&webview_resources_table)?.as_ref().clone()), None => None, }; tray.set_icon(icon) @@ -125,19 +127,21 @@ fn set_icon( #[command(root = "crate")] fn set_menu( app: AppHandle, + webview: Webview, rid: ResourceId, menu: Option<(ResourceId, ItemKind)>, ) -> crate::Result<()> { let resources_table = app.resources_table(); let tray = resources_table.get::>(rid)?; if let Some((rid, kind)) = menu { + let webview_resources_table = webview.resources_table(); match kind { ItemKind::Menu => { - let menu = resources_table.get::>(rid)?; + let menu = webview_resources_table.get::>(rid)?; tray.set_menu(Some((*menu).clone()))?; } ItemKind::Submenu => { - let submenu = resources_table.get::>(rid)?; + let submenu = webview_resources_table.get::>(rid)?; tray.set_menu(Some((*submenu).clone()))?; } _ => return Err(anyhow::anyhow!("unexpected menu item kind").into()),