From 0978a0a5f79eed4955dc3e241628ded5ffbc5650 Mon Sep 17 00:00:00 2001 From: Jonatan Pettersson Date: Wed, 31 Dec 2025 14:40:01 +0100 Subject: [PATCH] fix: Update data on preview in desktop mode --- src/app.rs | 40 ++++++++++++++++++++++++++++++++-------- 1 file changed, 32 insertions(+), 8 deletions(-) diff --git a/src/app.rs b/src/app.rs index 01ca40a..9afbf56 100644 --- a/src/app.rs +++ b/src/app.rs @@ -3669,7 +3669,10 @@ impl Application for App { id, Window::new(WindowKind::Preview(entity_opt, preview_kind)), ); - return command.map(|_id| cosmic::action::none()); + return Task::batch([ + self.update_desktop(), // Force re-calculating of directory sizes + command.map(|_id| cosmic::action::none()), + ]); } } } @@ -6243,18 +6246,39 @@ impl Application for App { } } - let mut selected_preview = None; - if self.core.window.show_context { - if let ContextPage::Preview(entity_opt, PreviewKind::Selected) = self.context_page { - selected_preview = Some(entity_opt.unwrap_or_else(|| self.tab_model.active())); + let mut selected_previews = Vec::new(); + match self.mode { + Mode::App => { + if self.core.window.show_context { + if let ContextPage::Preview(entity_opt, PreviewKind::Selected) = + self.context_page + { + selected_previews + .push(Some(entity_opt.unwrap_or_else(|| self.tab_model.active()))); + } + } + } + Mode::Desktop => { + for window_kind in self.windows.iter().map(|(_, window)| &window.kind) { + if let WindowKind::Preview(entity_opt, _) = window_kind { + selected_previews + .push(Some(entity_opt.unwrap_or_else(|| self.tab_model.active()))); + } + } } } + subscriptions.extend(self.tab_model.iter().filter_map(|entity| { let tab = self.tab_model.data::(entity)?; Some( - tab.subscription(selected_preview == Some(entity)) - .with(entity) - .map(|(entity, tab_msg)| Message::TabMessage(Some(entity), tab_msg)), + tab.subscription( + selected_previews + .iter() + .find(|preview| preview.as_ref() == Some(entity).as_ref()) + .is_some(), + ) + .with(entity) + .map(|(entity, tab_msg)| Message::TabMessage(Some(entity), tab_msg)), ) }));