diff --git a/src-tauri/src/app/runner.rs b/src-tauri/src/app/runner.rs index 7e12db063..9a9d00edd 100644 --- a/src-tauri/src/app/runner.rs +++ b/src-tauri/src/app/runner.rs @@ -5,6 +5,9 @@ use std::sync::Arc; use tauri::Manager; +#[cfg(target_os = "macos")] +use tauri::{Emitter, Listener}; + use crate::commands; use crate::tray::{TrayIconStatus, TrayManager, TrayStateSnapshot}; diff --git a/src-tauri/src/commands/provider_pool_cmd.rs b/src-tauri/src/commands/provider_pool_cmd.rs index 5c0ca736a..dbc735f43 100644 --- a/src-tauri/src/commands/provider_pool_cmd.rs +++ b/src-tauri/src/commands/provider_pool_cmd.rs @@ -2934,7 +2934,11 @@ pub struct PlaywrightStatus { /// 获取系统 Chrome 可执行文件路径 fn get_system_chrome_path() -> Option { - let _home = dirs::home_dir().unwrap_or_else(|| PathBuf::from(".")); + #[cfg_attr( + not(any(target_os = "macos", target_os = "windows")), + allow(unused_variables) + )] + let home = dirs::home_dir().unwrap_or_else(|| PathBuf::from(".")); #[cfg(target_os = "macos")] { diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index 20d51bb7f..244f1c624 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -2,6 +2,10 @@ //! //! 这是一个 Tauri 应用,提供 AI API 的代理和管理功能。 +// 抑制 objc crate 宏内部的 unexpected_cfgs 警告 +// 该警告来自 cocoa/objc 依赖的 msg_send! 宏,是已知的 issue +#![allow(unexpected_cfgs)] + // 核心模块 pub mod agent; pub mod app; diff --git a/src-tauri/src/screenshot/capture.rs b/src-tauri/src/screenshot/capture.rs index 298de470b..d30a50504 100644 --- a/src-tauri/src/screenshot/capture.rs +++ b/src-tauri/src/screenshot/capture.rs @@ -6,6 +6,9 @@ use std::path::PathBuf; use tauri::AppHandle; use tracing::{debug, error, info}; +#[cfg(target_os = "macos")] +use tracing::warn; + /// 截图错误类型 #[derive(Debug, thiserror::Error)] pub enum CaptureError { diff --git a/src-tauri/src/screenshot/window.rs b/src-tauri/src/screenshot/window.rs index 2b7b573ff..fc97ee883 100644 --- a/src-tauri/src/screenshot/window.rs +++ b/src-tauri/src/screenshot/window.rs @@ -8,8 +8,10 @@ use tauri::{AppHandle, Manager, WebviewUrl, WebviewWindowBuilder}; use tracing::{debug, info}; #[cfg(target_os = "macos")] +#[allow(deprecated)] use cocoa::appkit::{NSColor, NSWindow}; #[cfg(target_os = "macos")] +#[allow(deprecated)] use cocoa::base::{id, nil}; /// 窗口错误类型 @@ -164,6 +166,7 @@ pub fn open_floating_window(app: &AppHandle, image_path: &Path) -> Result<(), Wi { use objc::{msg_send, sel, sel_impl}; if let Ok(ns_win) = window.ns_window() { + #[allow(deprecated, unexpected_cfgs)] unsafe { let ns_window = ns_win as id; // 设置窗口背景透明 @@ -202,24 +205,25 @@ pub fn open_floating_window(app: &AppHandle, image_path: &Path) -> Result<(), Wi let (x, y) = calculate_window_position(app); // 创建悬浮窗口(启用透明) - let _window = - WebviewWindowBuilder::new(app, FLOATING_WINDOW_LABEL, WebviewUrl::App(url.into())) - .inner_size(WINDOW_WIDTH, WINDOW_HEIGHT) - .position(x, y) - .decorations(false) - .always_on_top(true) - .skip_taskbar(true) - .visible(true) - .focused(true) - .transparent(true) - .build() - .map_err(|e| WindowError::CreateFailed(format!("{}", e)))?; + #[cfg_attr(not(target_os = "macos"), allow(unused_variables))] + let window = WebviewWindowBuilder::new(app, FLOATING_WINDOW_LABEL, WebviewUrl::App(url.into())) + .inner_size(WINDOW_WIDTH, WINDOW_HEIGHT) + .position(x, y) + .decorations(false) + .always_on_top(true) + .skip_taskbar(true) + .visible(true) + .focused(true) + .transparent(true) + .build() + .map_err(|e| WindowError::CreateFailed(format!("{}", e)))?; // macOS: 设置窗口和 webview 背景透明 #[cfg(target_os = "macos")] { use objc::{msg_send, sel, sel_impl}; if let Ok(ns_win) = window.ns_window() { + #[allow(deprecated, unexpected_cfgs)] unsafe { let ns_window = ns_win as id; // 设置窗口背景透明 diff --git a/src-tauri/src/services/update_window.rs b/src-tauri/src/services/update_window.rs index c931acdf7..d396b7981 100644 --- a/src-tauri/src/services/update_window.rs +++ b/src-tauri/src/services/update_window.rs @@ -12,8 +12,10 @@ use tauri::{AppHandle, Manager, WebviewUrl, WebviewWindowBuilder}; use tracing::{debug, info}; #[cfg(target_os = "macos")] +#[allow(deprecated)] use cocoa::appkit::{NSColor, NSWindow}; #[cfg(target_os = "macos")] +#[allow(deprecated)] use cocoa::base::{id, nil}; use super::update_check_service::UpdateInfo; @@ -164,7 +166,8 @@ pub fn open_update_window( let (x, y) = calculate_window_position(app); - let _window = WebviewWindowBuilder::new(app, UPDATE_WINDOW_LABEL, WebviewUrl::App(url.into())) + #[cfg_attr(not(target_os = "macos"), allow(unused_variables))] + let window = WebviewWindowBuilder::new(app, UPDATE_WINDOW_LABEL, WebviewUrl::App(url.into())) .inner_size(WINDOW_WIDTH, WINDOW_HEIGHT) .position(x, y) .decorations(false) @@ -182,6 +185,7 @@ pub fn open_update_window( { use objc::{msg_send, sel, sel_impl}; if let Ok(ns_win) = window.ns_window() { + #[allow(deprecated, unexpected_cfgs)] unsafe { let ns_window = ns_win as id; let clear_color = NSColor::clearColor(nil);