修复侧边栏标签页状态无法保持的问题

This commit is contained in:
2026-05-15 11:32:04 +08:00
parent 2df605c864
commit b51ce6853b

View File

@@ -62,7 +62,9 @@ pub fn reading_view(
let has_bookmark = bookmarks.iter().any(|b| b.section == *current_section && b.page == *current_page); let has_bookmark = bookmarks.iter().any(|b| b.section == *current_section && b.page == *current_page);
// --- Sidebar (TOC + Bookmarks) --- // --- Sidebar (TOC + Bookmarks) ---
let mut sidebar_tab: usize = 0; let sidebar_tab_id = ui.make_persistent_id("sidebar_tab");
let mut sidebar_tab: usize = ui.data_mut(|d| *d.get_temp_mut_or_default::<usize>(sidebar_tab_id));
if *sidebar_open { if *sidebar_open {
egui::SidePanel::left("toc_sidebar") egui::SidePanel::left("toc_sidebar")
.resizable(true) .resizable(true)
@@ -73,8 +75,14 @@ pub fn reading_view(
let bm_response = ui.selectable_label(sidebar_tab == 1, let bm_response = ui.selectable_label(sidebar_tab == 1,
format!("🔖 书签 ({})", bookmarks.len()) format!("🔖 书签 ({})", bookmarks.len())
); );
if toc_response.clicked() { sidebar_tab = 0; } if toc_response.clicked() {
if bm_response.clicked() { sidebar_tab = 1; } sidebar_tab = 0;
ui.data_mut(|d| *d.get_temp_mut_or_default::<usize>(sidebar_tab_id) = 0);
}
if bm_response.clicked() {
sidebar_tab = 1;
ui.data_mut(|d| *d.get_temp_mut_or_default::<usize>(sidebar_tab_id) = 1);
}
}); });
ui.separator(); ui.separator();
if sidebar_tab == 0 { if sidebar_tab == 0 {