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.
This commit is contained in:
2026-03-18 09:18:52 +01:00
parent 908c9e8118
commit d5c6760a2d

View File

@@ -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);
}