diff --git a/src/reader.rs b/src/reader.rs index a9c4176..9c6b3ad 100644 --- a/src/reader.rs +++ b/src/reader.rs @@ -62,7 +62,9 @@ pub fn reading_view( let has_bookmark = bookmarks.iter().any(|b| b.section == *current_section && b.page == *current_page); // --- 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::(sidebar_tab_id)); + if *sidebar_open { egui::SidePanel::left("toc_sidebar") .resizable(true) @@ -73,8 +75,14 @@ pub fn reading_view( let bm_response = ui.selectable_label(sidebar_tab == 1, format!("🔖 书签 ({})", bookmarks.len()) ); - if toc_response.clicked() { sidebar_tab = 0; } - if bm_response.clicked() { sidebar_tab = 1; } + if toc_response.clicked() { + sidebar_tab = 0; + ui.data_mut(|d| *d.get_temp_mut_or_default::(sidebar_tab_id) = 0); + } + if bm_response.clicked() { + sidebar_tab = 1; + ui.data_mut(|d| *d.get_temp_mut_or_default::(sidebar_tab_id) = 1); + } }); ui.separator(); if sidebar_tab == 0 {