mirror of
https://github.com/clash-verge-rev/clash-verge-rev.git
synced 2026-01-29 00:35:38 +08:00
feat: manage windows with tauri window-state to address various window issues
This commit is contained in:
16
src-tauri/Cargo.lock
generated
16
src-tauri/Cargo.lock
generated
@@ -1092,6 +1092,7 @@ dependencies = [
|
||||
"tauri-plugin-process",
|
||||
"tauri-plugin-shell",
|
||||
"tauri-plugin-updater",
|
||||
"tauri-plugin-window-state",
|
||||
"tempfile",
|
||||
"tokio",
|
||||
"tokio-tungstenite 0.26.2",
|
||||
@@ -7130,6 +7131,21 @@ dependencies = [
|
||||
"zip",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tauri-plugin-window-state"
|
||||
version = "2.2.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a27a3fe49de72adbe0d84aee33c89a0b059722cd0b42aaeab29eaaee7f7535cd"
|
||||
dependencies = [
|
||||
"bitflags 2.9.0",
|
||||
"log",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"tauri",
|
||||
"tauri-plugin",
|
||||
"thiserror 2.0.12",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tauri-runtime"
|
||||
version = "2.5.0"
|
||||
|
||||
@@ -61,6 +61,7 @@ tauri-plugin-process = "2.2.0"
|
||||
tauri-plugin-clipboard-manager = "2.2.2"
|
||||
tauri-plugin-deep-link = "2.2.0"
|
||||
tauri-plugin-devtools = "2.0.0"
|
||||
tauri-plugin-window-state = "2.2.2"
|
||||
zip = "2.5.0"
|
||||
reqwest_dav = "0.1.15"
|
||||
aes-gcm = { version = "0.10.3", features = ["std"] }
|
||||
|
||||
@@ -20,6 +20,7 @@ use tauri::Manager;
|
||||
use tauri_plugin_autostart::MacosLauncher;
|
||||
use tauri_plugin_deep_link::DeepLinkExt;
|
||||
use utils::logging::Type;
|
||||
use tauri_plugin_window_state;
|
||||
|
||||
/// A global singleton handle to the application.
|
||||
pub struct AppHandleManager {
|
||||
@@ -117,6 +118,9 @@ pub fn run() {
|
||||
.plugin(tauri_plugin_dialog::init())
|
||||
.plugin(tauri_plugin_shell::init())
|
||||
.plugin(tauri_plugin_deep_link::init())
|
||||
.plugin(tauri_plugin_window_state::Builder::default()
|
||||
.with_state_flags(tauri_plugin_window_state::StateFlags::all())
|
||||
.build())
|
||||
.setup(|app| {
|
||||
#[cfg(any(target_os = "linux", all(debug_assertions, windows)))]
|
||||
{
|
||||
|
||||
@@ -163,13 +163,14 @@ pub fn create_window(is_showup: bool) {
|
||||
tauri::WebviewUrl::App("index.html".into()),
|
||||
)
|
||||
.title("Clash Verge")
|
||||
.inner_size(890.0, 700.0)
|
||||
.min_inner_size(620.0, 550.0)
|
||||
.inner_size(900.0, 700.0)
|
||||
.min_inner_size(650.0, 580.0)
|
||||
.decorations(false)
|
||||
.maximizable(true)
|
||||
.additional_browser_args("--enable-features=msWebView2EnableDraggableRegions --disable-features=OverscrollHistoryNavigation,msExperimentalScrolling")
|
||||
.transparent(true)
|
||||
.shadow(true)
|
||||
.visible(true)
|
||||
.build();
|
||||
|
||||
#[cfg(target_os = "macos")]
|
||||
@@ -181,8 +182,9 @@ pub fn create_window(is_showup: bool) {
|
||||
.decorations(true)
|
||||
.hidden_title(true)
|
||||
.title_bar_style(tauri::TitleBarStyle::Overlay)
|
||||
.inner_size(890.0, 700.0)
|
||||
.min_inner_size(620.0, 550.0)
|
||||
.inner_size(900.0, 700.0)
|
||||
.min_inner_size(650.0, 580.0)
|
||||
.visible(true)
|
||||
.build();
|
||||
|
||||
#[cfg(target_os = "linux")]
|
||||
@@ -193,17 +195,15 @@ pub fn create_window(is_showup: bool) {
|
||||
)
|
||||
.title("Clash Verge")
|
||||
.decorations(false)
|
||||
.inner_size(890.0, 700.0)
|
||||
.min_inner_size(620.0, 550.0)
|
||||
.inner_size(900.0, 700.0)
|
||||
.min_inner_size(650.0, 580.0)
|
||||
.transparent(true)
|
||||
.visible(true)
|
||||
.build();
|
||||
|
||||
match window {
|
||||
Ok(window) => {
|
||||
Ok(_) => {
|
||||
logging!(info, Type::Window, true, "Window created successfully");
|
||||
let _ = window.show();
|
||||
let _ = window.set_focus();
|
||||
|
||||
// 标记前端UI已准备就绪,向前端发送启动完成事件
|
||||
let app_handle_clone = app_handle.clone();
|
||||
AsyncHandler::spawn(move || async move {
|
||||
|
||||
Reference in New Issue
Block a user