fix(styling): fullscreen kraft paper bg, persistence preset refresh, reader cleanup

This commit is contained in:
Developer
2026-05-14 22:50:01 +08:00
parent 0521439281
commit a82fa6b7b6
4 changed files with 56 additions and 30 deletions

View File

@@ -178,6 +178,26 @@ impl App {
impl eframe::App for App {
fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) {
let use_kraft = self.settings.use_kraft_bg;
// 牛皮纸模式:全窗口绘制纹理 + 面板透明
if use_kraft {
if let Some(texture) = &self.kraft_texture {
ctx.style_mut(|s| {
s.visuals.panel_fill = egui::Color32::TRANSPARENT;
s.visuals.window_fill = egui::Color32::TRANSPARENT;
s.visuals.faint_bg_color = egui::Color32::TRANSPARENT;
});
let viewport_rect =
ctx.input(|i| i.screen_rect());
crate::texture::draw_tiled_bg(
&ctx.layer_painter(egui::LayerId::background()),
viewport_rect,
texture,
);
}
}
if self.state.book.is_none() {
self.welcome_view(ctx);
return;
@@ -190,24 +210,22 @@ impl eframe::App for App {
let mut style = self.active_profile().clone();
let theme_copy = self.settings.theme;
let use_kraft = self.settings.use_kraft_bg;
let profile_names: Vec<String> = self.settings.profiles.iter().map(|p| p.name.clone()).collect();
egui::CentralPanel::default().show(ctx, |ui| {
let book = self.state.book.as_mut().unwrap();
let action = crate::reader::reading_view(
ui,
book,
&mut self.state.current_section,
&mut self.state.current_page,
&mut self.state.sidebar_open,
&mut style,
&theme_copy,
&file_path,
self.kraft_texture.as_ref(),
use_kraft,
&profile_names,
);
let action = crate::reader::reading_view(
ui,
book,
&mut self.state.current_section,
&mut self.state.current_page,
&mut self.state.sidebar_open,
&mut style,
&theme_copy,
use_kraft,
&file_path,
&profile_names,
);
if action.go_back {
self.save_reading_position();