refactor(window_manager): simplify window state handling and improve method organization

This commit is contained in:
Tunglies
2025-10-23 16:21:51 +08:00
parent d7859b07a6
commit f061bce2a1

View File

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