Add PDF state persistence

This commit is contained in:
2026-03-30 09:29:19 +02:00
parent d1bb79570d
commit 4613b8e5dd
15 changed files with 380 additions and 55 deletions

View File

@@ -10,7 +10,7 @@ mod global;
mod project;
pub use global::GlobalConfig;
pub use project::ProjectConfig;
pub use project::{PdfTabEntry, PdfTabState, ProjectConfig, SessionConfig};
use std::collections::HashMap;
@@ -104,8 +104,8 @@ pub struct MergedConfig {
pub appearance: AppearanceConfig,
pub layout: LayoutConfig,
pub keybindings: KeybindingsConfig,
/// Reference IDs of tabs that should be restored on launch.
pub open_tabs: Vec<String>,
/// Tabs that should be restored on launch.
pub open_tabs: Vec<PdfTabEntry>,
}
impl MergedConfig {
@@ -157,7 +157,7 @@ pub enum ConfigError {
#[cfg(test)]
mod tests {
use super::*;
use crate::config::project::SessionConfig;
use crate::config::project::{PdfTabEntry, SessionConfig};
// ── AppearanceConfig ──────────────────────────────────────────────────────
@@ -273,12 +273,18 @@ mod tests {
let global = GlobalConfig::default();
let project = ProjectConfig {
session: SessionConfig {
open_tabs: vec!["tab-a".to_string(), "tab-b".to_string()],
open_tabs: vec![
PdfTabEntry { ref_id: "tab-a".to_string(), title: "a2024".to_string() },
PdfTabEntry { ref_id: "tab-b".to_string(), title: "b2024".to_string() },
],
..Default::default()
},
..Default::default()
};
let merged = MergedConfig::merge(&global, Some(&project));
assert_eq!(merged.open_tabs, ["tab-a", "tab-b"]);
assert_eq!(merged.open_tabs.len(), 2);
assert_eq!(merged.open_tabs[0].ref_id, "tab-a");
assert_eq!(merged.open_tabs[1].ref_id, "tab-b");
}
#[test]