Auto-open nav bar with thumbnails for multi-page documents

- Automatically show nav bar and thumbnail panel when loading PDF files
- Hide nav bar when switching to single-page documents
- Apply auto-toggle on initial load and document navigation
- Thumbnails are already generated via DocumentManager.open_document()
This commit is contained in:
mow 2026-02-05 17:30:14 +01:00
parent a8344f77a1
commit ea4acf9fdd
2 changed files with 40 additions and 1 deletions

View file

@ -121,7 +121,20 @@ impl cosmic::Application for NoctuaApp {
// Apply persisted panel states.
core.window.show_context = config.context_drawer_visible;
core.nav_bar_set_toggled(config.nav_bar_visible);
// Auto-open nav bar for multi-page documents
let should_show_nav = if let Some(doc) = document_manager.current_document() {
doc.is_multi_page()
} else {
false
};
if should_show_nav {
core.nav_bar_set_toggled(true);
model.panels.left = Some(crate::ui::model::LeftPanel::Thumbnails);
} else {
core.nav_bar_set_toggled(config.nav_bar_visible);
}
// Start thumbnail generation for initial document if applicable.
let init_task = start_thumbnail_generation(&model);
@ -261,6 +274,23 @@ impl NoctuaApp {
let _ = self.config.write_entry(handler);
}
}
/// Update nav bar visibility based on current document type.
pub fn update_nav_bar_for_document(&mut self) {
use crate::ui::model::LeftPanel;
if let Some(doc) = self.document_manager.current_document() {
if doc.is_multi_page() {
// Multi-page document: open nav bar and show thumbnails
self.core.nav_bar_set_toggled(true);
self.model.panels.left = Some(LeftPanel::Thumbnails);
} else {
// Single-page document: close nav bar
self.core.nav_bar_set_toggled(false);
self.model.panels.left = None;
}
}
}
}
/// Map raw key presses + modifiers into high-level application messages.

View file

@ -38,6 +38,9 @@ pub fn update(app: &mut NoctuaApp, msg: &AppMessage) -> UpdateResult {
app.model.viewport.fit_mode = ViewMode::Fit;
app.model.viewport.scale = 1.0;
cache_render(&mut app.model, &mut app.document_manager);
// Auto-toggle nav bar for multi-page documents
app.update_nav_bar_for_document();
}
}
@ -51,6 +54,9 @@ pub fn update(app: &mut NoctuaApp, msg: &AppMessage) -> UpdateResult {
app.model.viewport.fit_mode = ViewMode::Fit;
app.model.reset_pan();
cache_render(&mut app.model, &mut app.document_manager);
// Auto-toggle nav bar for multi-page documents
app.update_nav_bar_for_document();
}
}
@ -64,6 +70,9 @@ pub fn update(app: &mut NoctuaApp, msg: &AppMessage) -> UpdateResult {
app.model.viewport.fit_mode = ViewMode::Fit;
app.model.reset_pan();
cache_render(&mut app.model, &mut app.document_manager);
// Auto-toggle nav bar for multi-page documents
app.update_nav_bar_for_document();
}
}