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.
|
// Apply persisted panel states.
|
||||||
core.window.show_context = config.context_drawer_visible;
|
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.
|
// Start thumbnail generation for initial document if applicable.
|
||||||
let init_task = start_thumbnail_generation(&model);
|
let init_task = start_thumbnail_generation(&model);
|
||||||
|
|
@ -261,6 +274,23 @@ impl NoctuaApp {
|
||||||
let _ = self.config.write_entry(handler);
|
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.
|
/// 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.fit_mode = ViewMode::Fit;
|
||||||
app.model.viewport.scale = 1.0;
|
app.model.viewport.scale = 1.0;
|
||||||
cache_render(&mut app.model, &mut app.document_manager);
|
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.viewport.fit_mode = ViewMode::Fit;
|
||||||
app.model.reset_pan();
|
app.model.reset_pan();
|
||||||
cache_render(&mut app.model, &mut app.document_manager);
|
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.viewport.fit_mode = ViewMode::Fit;
|
||||||
app.model.reset_pan();
|
app.model.reset_pan();
|
||||||
cache_render(&mut app.model, &mut app.document_manager);
|
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