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:
parent
a8344f77a1
commit
ea4acf9fdd
2 changed files with 40 additions and 1 deletions
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue