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:
@@ -7,7 +7,7 @@ use rand_core::OsRng;
|
|||||||
use reqwest::Client;
|
use reqwest::Client;
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use tauri::{
|
use tauri::{
|
||||||
menu::{MenuBuilder, MenuItem, MenuItemBuilder},
|
menu::{MenuBuilder, MenuItem, MenuItemBuilder, PredefinedMenuItem},
|
||||||
tray::{MouseButton, MouseButtonState, TrayIconBuilder, TrayIconEvent},
|
tray::{MouseButton, MouseButtonState, TrayIconBuilder, TrayIconEvent},
|
||||||
AppHandle, Manager, State, WebviewWindow, Window, WindowEvent, Wry,
|
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 received_item = MenuItemBuilder::with_id("received", "Received: 0 B").build(app)?;
|
||||||
let sent_item = MenuItemBuilder::with_id("sent", "Sent: 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 toggle_item = MenuItemBuilder::with_id("toggle", "Connect NexaVPN").build(app)?;
|
||||||
let open_item = MenuItemBuilder::with_id("open", "Open NexaVPN").build(app)?;
|
let separator_top = PredefinedMenuItem::separator(app)?;
|
||||||
let quit_item = MenuItemBuilder::with_id("quit", "Quit NexaVPN").build(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)
|
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()?;
|
.build()?;
|
||||||
|
|
||||||
let mut tray = TrayIconBuilder::new().menu(&menu).show_menu_on_left_click(false);
|
let mut tray = TrayIconBuilder::new().menu(&menu).show_menu_on_left_click(false);
|
||||||
@@ -562,6 +573,7 @@ pub fn run() {
|
|||||||
|
|
||||||
tray
|
tray
|
||||||
.on_menu_event(|app, event| match event.id().as_ref() {
|
.on_menu_event(|app, event| match event.id().as_ref() {
|
||||||
|
"status" | "received" | "sent" => {}
|
||||||
"toggle" => {
|
"toggle" => {
|
||||||
toggle_tray_connection(&app);
|
toggle_tray_connection(&app);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user