mirror of
https://github.com/clash-verge-rev/clash-verge-rev.git
synced 2026-01-29 08:45:41 +08:00
refactor(window_manager): simplify window state handling and improve method organization
This commit is contained in:
@@ -189,52 +189,51 @@ impl WindowManager {
|
|||||||
);
|
);
|
||||||
|
|
||||||
match current_state {
|
match current_state {
|
||||||
WindowState::NotExist => {
|
WindowState::NotExist => Self::handle_not_exist_toggle().await,
|
||||||
// 窗口不存在,创建新窗口
|
WindowState::VisibleFocused | WindowState::VisibleUnfocused => Self::hide_main_window(),
|
||||||
logging!(info, Type::Window, "窗口不存在,将创建新窗口");
|
WindowState::Minimized | WindowState::Hidden => Self::activate_existing_main_window(),
|
||||||
// 由于已经有防抖保护,直接调用内部方法
|
}
|
||||||
if Self::create_window(true).await {
|
}
|
||||||
WindowOperationResult::Created
|
|
||||||
} else {
|
// 窗口不存在时创建新窗口
|
||||||
WindowOperationResult::Failed
|
async fn handle_not_exist_toggle() -> WindowOperationResult {
|
||||||
}
|
logging!(info, Type::Window, "窗口不存在,将创建新窗口");
|
||||||
}
|
// 由于已经有防抖保护,直接调用内部方法
|
||||||
WindowState::VisibleFocused | WindowState::VisibleUnfocused => {
|
if Self::create_window(true).await {
|
||||||
logging!(
|
WindowOperationResult::Created
|
||||||
info,
|
} else {
|
||||||
Type::Window,
|
WindowOperationResult::Failed
|
||||||
"窗口可见(焦点状态: {}),将隐藏窗口",
|
}
|
||||||
if current_state == WindowState::VisibleFocused {
|
}
|
||||||
"有焦点"
|
|
||||||
} else {
|
// 隐藏主窗口
|
||||||
"无焦点"
|
fn hide_main_window() -> WindowOperationResult {
|
||||||
}
|
logging!(info, Type::Window, "窗口可见,将隐藏窗口");
|
||||||
);
|
if let Some(window) = Self::get_main_window() {
|
||||||
if let Some(window) = Self::get_main_window() {
|
match window.hide() {
|
||||||
match window.hide() {
|
Ok(_) => {
|
||||||
Ok(_) => {
|
logging!(info, Type::Window, "窗口已成功隐藏");
|
||||||
logging!(info, Type::Window, "窗口已成功隐藏");
|
WindowOperationResult::Hidden
|
||||||
WindowOperationResult::Hidden
|
}
|
||||||
}
|
Err(e) => {
|
||||||
Err(e) => {
|
logging!(warn, Type::Window, "隐藏窗口失败: {}", e);
|
||||||
logging!(warn, Type::Window, "隐藏窗口失败: {}", e);
|
|
||||||
WindowOperationResult::Failed
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
logging!(warn, Type::Window, "无法获取窗口实例");
|
|
||||||
WindowOperationResult::Failed
|
|
||||||
}
|
|
||||||
}
|
|
||||||
WindowState::Minimized | WindowState::Hidden => {
|
|
||||||
logging!(info, Type::Window, "窗口存在但被隐藏或最小化,将激活窗口");
|
|
||||||
if let Some(window) = Self::get_main_window() {
|
|
||||||
Self::activate_window(&window)
|
|
||||||
} else {
|
|
||||||
logging!(warn, Type::Window, "无法获取窗口实例");
|
|
||||||
WindowOperationResult::Failed
|
WindowOperationResult::Failed
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
logging!(warn, Type::Window, "无法获取窗口实例");
|
||||||
|
WindowOperationResult::Failed
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 激活已存在的主窗口
|
||||||
|
fn activate_existing_main_window() -> WindowOperationResult {
|
||||||
|
logging!(info, Type::Window, "窗口存在但被隐藏或最小化,将激活窗口");
|
||||||
|
if let Some(window) = Self::get_main_window() {
|
||||||
|
Self::activate_window(&window)
|
||||||
|
} else {
|
||||||
|
logging!(warn, Type::Window, "无法获取窗口实例");
|
||||||
|
WindowOperationResult::Failed
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user