diff --git a/news.d/47.3/fixed-svg-print-preview-missing b/news.d/47.3/fixed-svg-print-preview-missing new file mode 100644 index 0000000..3416d27 --- /dev/null +++ b/news.d/47.3/fixed-svg-print-preview-missing @@ -0,0 +1 @@ +Sometimes SVGs are not shown in the print preview. diff --git a/news.d/47.3/released b/news.d/47.3/released new file mode 100644 index 0000000..0eab4be --- /dev/null +++ b/news.d/47.3/released @@ -0,0 +1 @@ +2025-01-13 diff --git a/src/widgets/print.rs b/src/widgets/print.rs index 25f00e7..5bd3e1c 100644 --- a/src/widgets/print.rs +++ b/src/widgets/print.rs @@ -462,6 +462,16 @@ impl LpPrint { return; }; + let preview_image = LpImage::new_still(); + preview_image.set_fixed_background_color(Some(gdk::RGBA::new(0.94, 0.94, 0.94, 1.))); + glib::spawn_future_local(glib::clone!( + #[strong] + preview_image, + #[strong] + file, + async move { preview_image.load(&file).await } + )); + let print_dialog = gtk::PrintDialog::builder() .accept_label(gettext("Continue…")) .title(gettext("Print Image")) @@ -490,25 +500,17 @@ impl LpPrint { Ok(print_setup) => print_setup, }; - Self::new(image, parent, print_dialog, print_setup); + Self::new(image, preview_image, parent, print_dialog, print_setup); }); } pub fn new( image: LpImage, + preview_image: LpImage, parent: gtk::Window, print_dialog: gtk::PrintDialog, print_setup: gtk::PrintSetup, ) -> Self { - let preview_image = LpImage::new_still(); - preview_image.set_fixed_background_color(Some(gdk::RGBA::new(0.94, 0.94, 0.94, 1.))); - if let Some(file) = image.file() { - let preview_image_ = preview_image.clone(); - glib::spawn_future_local(async move { preview_image_.load(&file).await }); - } else { - log::error!("Trying to print image without file"); - } - let obj: Self = glib::Object::builder() .property("image", image) .property("preview-image", preview_image)