From 70d8d00a3dff0ce1a51f381c68a61bb0462ce781 Mon Sep 17 00:00:00 2001 From: Sophie Herold Date: Thu, 2 Feb 2023 20:23:05 +0100 Subject: [PATCH] imageView: Reset zoom and rotation on page change Keeping zoom or rotation would be inconsistent since it's only preserved while images are cached. Close #65 --- src/widgets/image_view.rs | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/widgets/image_view.rs b/src/widgets/image_view.rs index b82fb9d..cbde007 100644 --- a/src/widgets/image_view.rs +++ b/src/widgets/image_view.rs @@ -473,14 +473,29 @@ impl LpImageView { } #[template_callback] + /// Called when page change animation completed fn target_page_reached_cb(&self) { + let current_page = self.current_page(); + if self.imp().preserve_content.get() { - if let Some(new_page) = self.current_page() { + if let Some(new_page) = ¤t_page { self.update_sliding_view(&new_page.path()); } else { log::error!("No LpImagePage"); } } + + // Reset zoom and rotation of other pages + if let Some(new_page) = ¤t_page { + let mut other_pages = self.sliding_view().pages(); + other_pages.remove(&new_page.path()); + for (_, page) in other_pages { + let image = page.image(); + image.set_rotation(0.); + image.set_best_fit(true); + image.zoom_best_fit(); + } + } } #[template_callback]