From b51ce6853bf66acf29c3657439e6609083422be7 Mon Sep 17 00:00:00 2001 From: xiaji Date: Fri, 15 May 2026 11:32:04 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BE=A7=E8=BE=B9=E6=A0=8F?= =?UTF-8?q?=E6=A0=87=E7=AD=BE=E9=A1=B5=E7=8A=B6=E6=80=81=E6=97=A0=E6=B3=95?= =?UTF-8?q?=E4=BF=9D=E6=8C=81=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/reader.rs | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) 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 {