From ea4acf9fdd8bf439ccaf70ea20a8409219405de4 Mon Sep 17 00:00:00 2001 From: mow Date: Thu, 5 Feb 2026 17:30:14 +0100 Subject: [PATCH] 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() --- src/ui/app.rs | 32 +++++++++++++++++++++++++++++++- src/ui/update.rs | 9 +++++++++ 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/src/ui/app.rs b/src/ui/app.rs index 3e078fb..2093176 100644 --- a/src/ui/app.rs +++ b/src/ui/app.rs @@ -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. diff --git a/src/ui/update.rs b/src/ui/update.rs index 92e3e88..a511072 100644 --- a/src/ui/update.rs +++ b/src/ui/update.rs @@ -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(); } }