From c1fefe9986f69493003469b1e29b77068f73d30d Mon Sep 17 00:00:00 2001 From: signadou <39036502+signadou@users.noreply.github.com> Date: Tue, 14 Oct 2025 14:00:05 -0600 Subject: [PATCH 1/2] Add Bring All to Front predefined menu item type --- ...-all-to-front-predefined-menu-item-type.md | 6 +++++ crates/tauri/src/menu/builders/menu.rs | 24 +++++++++++++++++++ crates/tauri/src/menu/plugin.rs | 2 ++ crates/tauri/src/menu/predefined.rs | 23 ++++++++++++++++++ .../api/src/components/MenuItemBuilder.svelte | 3 ++- packages/api/src/menu/predefinedMenuItem.ts | 1 + 6 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 .changes/add-bring-all-to-front-predefined-menu-item-type.md diff --git a/.changes/add-bring-all-to-front-predefined-menu-item-type.md b/.changes/add-bring-all-to-front-predefined-menu-item-type.md new file mode 100644 index 000000000..b27261856 --- /dev/null +++ b/.changes/add-bring-all-to-front-predefined-menu-item-type.md @@ -0,0 +1,6 @@ +--- +'tauri': 'minor:feat' +'@tauri-apps/api': 'minor:feat' +--- + +Add Bring All to Front predefined menu item type diff --git a/crates/tauri/src/menu/builders/menu.rs b/crates/tauri/src/menu/builders/menu.rs index 2bf38fd56..6e54bae41 100644 --- a/crates/tauri/src/menu/builders/menu.rs +++ b/crates/tauri/src/menu/builders/menu.rs @@ -642,6 +642,30 @@ macro_rules! shared_menu_builder { .push(PredefinedMenuItem::services(self.manager, Some(text.as_ref())).map(|i| i.kind())); self } + + /// Add Bring All to Front menu item to the menu. + /// + /// ## Platform-specific: + /// + /// - **Windows / Linux:** Unsupported. + pub fn bring_all_to_front(mut self) -> Self { + self + .items + .push(PredefinedMenuItem::bring_all_to_front(self.manager, None).map(|i| i.kind())); + self + } + + /// Add Bring All to Front menu item with specified text to the menu. + /// + /// ## Platform-specific: + /// + /// - **Windows / Linux:** Unsupported. + pub fn bring_all_to_front_with_text>(mut self, text: S) -> Self { + self.items.push( + PredefinedMenuItem::bring_all_to_front(self.manager, Some(text.as_ref())).map(|i| i.kind()), + ); + self + } } }; } diff --git a/crates/tauri/src/menu/plugin.rs b/crates/tauri/src/menu/plugin.rs index 6db48a3d1..59c574c0b 100644 --- a/crates/tauri/src/menu/plugin.rs +++ b/crates/tauri/src/menu/plugin.rs @@ -91,6 +91,7 @@ enum Predefined { Quit, About(Option), Services, + BringAllToFront, } #[derive(Deserialize)] @@ -303,6 +304,7 @@ impl PredefinedMenuItemPayload { PredefinedMenuItem::about(webview, self.text.as_deref(), metadata) } Predefined::Services => PredefinedMenuItem::services(webview, self.text.as_deref()), + Predefined::BringAllToFront => PredefinedMenuItem::bring_all_to_front(webview, self.text.as_deref()), } } } diff --git a/crates/tauri/src/menu/predefined.rs b/crates/tauri/src/menu/predefined.rs index b25713615..cab7fb7b0 100644 --- a/crates/tauri/src/menu/predefined.rs +++ b/crates/tauri/src/menu/predefined.rs @@ -384,6 +384,29 @@ impl PredefinedMenuItem { Ok(Self(Arc::new(item))) } + /// Bring All to Front menu item + /// + /// ## Platform-specific: + /// + /// - **Windows / Linux:** Unsupported. + pub fn bring_all_to_front>(manager: &M, text: Option<&str>) -> crate::Result { + let handle = manager.app_handle(); + let app_handle = handle.clone(); + + let text = text.map(|t| t.to_owned()); + + let item = run_main_thread!(handle, || { + let item = muda::PredefinedMenuItem::bring_all_to_front(text.as_deref()); + PredefinedMenuItemInner { + id: item.id().clone(), + inner: Some(item), + app_handle, + } + })?; + + Ok(Self(Arc::new(item))) + } + /// Returns a unique identifier associated with this menu item. pub fn id(&self) -> &MenuId { &self.0.id diff --git a/examples/api/src/components/MenuItemBuilder.svelte b/examples/api/src/components/MenuItemBuilder.svelte index d907e0951..0f9343697 100644 --- a/examples/api/src/components/MenuItemBuilder.svelte +++ b/examples/api/src/components/MenuItemBuilder.svelte @@ -32,7 +32,8 @@ 'ShowAll', 'CloseWindow', 'Quit', - 'Services' + 'Services', + 'BringAllToFront' ] function onKindChange(event) { diff --git a/packages/api/src/menu/predefinedMenuItem.ts b/packages/api/src/menu/predefinedMenuItem.ts index fed9a543f..1517a35fa 100644 --- a/packages/api/src/menu/predefinedMenuItem.ts +++ b/packages/api/src/menu/predefinedMenuItem.ts @@ -102,6 +102,7 @@ export interface PredefinedMenuItemOptions { | 'CloseWindow' | 'Quit' | 'Services' + | 'BringAllToFront' | { About: AboutMetadata | null } From 7d30a89f5c74f141157a287fa61691d5cc24664a Mon Sep 17 00:00:00 2001 From: signadou <39036502+signadou@users.noreply.github.com> Date: Tue, 14 Oct 2025 15:23:51 -0600 Subject: [PATCH 2/2] Format and update changefile --- .changes/add-bring-all-to-front-predefined-menu-item-type.md | 4 ++-- crates/tauri/src/menu/builders/menu.rs | 3 ++- crates/tauri/src/menu/plugin.rs | 4 +++- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/.changes/add-bring-all-to-front-predefined-menu-item-type.md b/.changes/add-bring-all-to-front-predefined-menu-item-type.md index b27261856..fc5e9820a 100644 --- a/.changes/add-bring-all-to-front-predefined-menu-item-type.md +++ b/.changes/add-bring-all-to-front-predefined-menu-item-type.md @@ -1,6 +1,6 @@ --- -'tauri': 'minor:feat' -'@tauri-apps/api': 'minor:feat' +'tauri': 'patch:enhance' +'@tauri-apps/api': 'patch:enhance' --- Add Bring All to Front predefined menu item type diff --git a/crates/tauri/src/menu/builders/menu.rs b/crates/tauri/src/menu/builders/menu.rs index 6e54bae41..bd24f2a97 100644 --- a/crates/tauri/src/menu/builders/menu.rs +++ b/crates/tauri/src/menu/builders/menu.rs @@ -662,7 +662,8 @@ macro_rules! shared_menu_builder { /// - **Windows / Linux:** Unsupported. pub fn bring_all_to_front_with_text>(mut self, text: S) -> Self { self.items.push( - PredefinedMenuItem::bring_all_to_front(self.manager, Some(text.as_ref())).map(|i| i.kind()), + PredefinedMenuItem::bring_all_to_front(self.manager, Some(text.as_ref())) + .map(|i| i.kind()), ); self } diff --git a/crates/tauri/src/menu/plugin.rs b/crates/tauri/src/menu/plugin.rs index 59c574c0b..84ab54a98 100644 --- a/crates/tauri/src/menu/plugin.rs +++ b/crates/tauri/src/menu/plugin.rs @@ -304,7 +304,9 @@ impl PredefinedMenuItemPayload { PredefinedMenuItem::about(webview, self.text.as_deref(), metadata) } Predefined::Services => PredefinedMenuItem::services(webview, self.text.as_deref()), - Predefined::BringAllToFront => PredefinedMenuItem::bring_all_to_front(webview, self.text.as_deref()), + Predefined::BringAllToFront => { + PredefinedMenuItem::bring_all_to_front(webview, self.text.as_deref()) + } } } }