From d5c6760a2d9de8482df2bc503bcc255ee18fe5f2 Mon Sep 17 00:00:00 2001 From: nessi Date: Wed, 18 Mar 2026 09:18:52 +0100 Subject: [PATCH] feat: add visual separators and disable click events for status menu items in tray Add PredefinedMenuItem import and create separator items to visually group tray menu sections. Update menu item labels from "Open/Quit NexaVPN" to "Open/Quit NexaVPN Client" for clarity. Add separators around toggle item to separate status display from actions. Add no-op event handlers for status, received, and sent menu items to prevent unintended interactions with display-only elements. --- desktop-client/src-tauri/src/lib.rs | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/desktop-client/src-tauri/src/lib.rs b/desktop-client/src-tauri/src/lib.rs index fe95b0c..210b266 100644 --- a/desktop-client/src-tauri/src/lib.rs +++ b/desktop-client/src-tauri/src/lib.rs @@ -7,7 +7,7 @@ use rand_core::OsRng; use reqwest::Client; use serde::{Deserialize, Serialize}; use tauri::{ - menu::{MenuBuilder, MenuItem, MenuItemBuilder}, + menu::{MenuBuilder, MenuItem, MenuItemBuilder, PredefinedMenuItem}, tray::{MouseButton, MouseButtonState, TrayIconBuilder, TrayIconEvent}, AppHandle, Manager, State, WebviewWindow, Window, WindowEvent, Wry, }; @@ -549,10 +549,21 @@ pub fn run() { let received_item = MenuItemBuilder::with_id("received", "Received: 0 B").build(app)?; let sent_item = MenuItemBuilder::with_id("sent", "Sent: 0 B").build(app)?; let toggle_item = MenuItemBuilder::with_id("toggle", "Connect NexaVPN").build(app)?; - let open_item = MenuItemBuilder::with_id("open", "Open NexaVPN").build(app)?; - let quit_item = MenuItemBuilder::with_id("quit", "Quit NexaVPN").build(app)?; + let separator_top = PredefinedMenuItem::separator(app)?; + let separator_bottom = PredefinedMenuItem::separator(app)?; + let open_item = MenuItemBuilder::with_id("open", "Open NexaVPN Client").build(app)?; + let quit_item = MenuItemBuilder::with_id("quit", "Quit NexaVPN Client").build(app)?; let menu = MenuBuilder::new(app) - .items(&[&status_item, &received_item, &sent_item, &toggle_item, &open_item, &quit_item]) + .items(&[ + &status_item, + &received_item, + &sent_item, + &separator_top, + &toggle_item, + &separator_bottom, + &open_item, + &quit_item, + ]) .build()?; let mut tray = TrayIconBuilder::new().menu(&menu).show_menu_on_left_click(false); @@ -562,6 +573,7 @@ pub fn run() { tray .on_menu_event(|app, event| match event.id().as_ref() { + "status" | "received" | "sent" => {} "toggle" => { toggle_tray_connection(&app); }