From 270853ea57caa4ad8ff5b3cd9861c69fe875d35b Mon Sep 17 00:00:00 2001 From: Sophie Herold Date: Tue, 8 Aug 2023 18:23:26 +0200 Subject: [PATCH] image: Reload image on FileMonitor Renamed events The Rename event is also fired if the file got replaced via a file move. Closes #227 Part-of: --- src/widgets/image.rs | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/widgets/image.rs b/src/widgets/image.rs index d318a75..0d2c7e7 100644 --- a/src/widgets/image.rs +++ b/src/widgets/image.rs @@ -965,9 +965,19 @@ impl LpImage { ) { match event { gio::FileMonitorEvent::Renamed => { - if let Some(file) = file_b { + if let Some(file) = file_b.cloned() { log::debug!("Moved to {}", file.uri()); - self.set_file(file); + // current file got replaced with a new one + let file_replace = self.file().map_or(false, |x| x.equal(&file)); + self.set_file(&file); + if file_replace { + log::debug!("Image got replaced"); + let obj = self.clone(); + // TODO: error handling is missing + spawn(async move { + obj.load(&file).await; + }); + } } } gio::FileMonitorEvent::ChangesDoneHint => {