From f2bc4a66b5b86119f14c145fc094c3a421f5f70e Mon Sep 17 00:00:00 2001 From: Sophie Herold Date: Mon, 29 Jul 2024 15:16:06 +0200 Subject: [PATCH] imagePage: Show spinner with small delay That way, when quickly scrolling through images (holding down arrow keys) no restarting spinner animations are shown in between. --- .../icons/scalable/actions/external-link-symbolic.svg | 2 ++ src/widgets/image_page.rs | 11 +++++++++++ src/widgets/image_page.ui | 8 +++++++- 3 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 data/resources/icons/scalable/actions/external-link-symbolic.svg diff --git a/data/resources/icons/scalable/actions/external-link-symbolic.svg b/data/resources/icons/scalable/actions/external-link-symbolic.svg new file mode 100644 index 0000000..e88a887 --- /dev/null +++ b/data/resources/icons/scalable/actions/external-link-symbolic.svg @@ -0,0 +1,2 @@ + + diff --git a/src/widgets/image_page.rs b/src/widgets/image_page.rs index 90769c8..4302e7e 100644 --- a/src/widgets/image_page.rs +++ b/src/widgets/image_page.rs @@ -33,6 +33,8 @@ use crate::util::gettext::*; use crate::widgets::LpImage; mod imp { + use std::time::Duration; + use super::*; #[derive(Debug, Default, CompositeTemplate, Properties)] @@ -43,6 +45,8 @@ mod imp { pub(super) stack: TemplateChild, #[template_child] pub(super) spinner_page: TemplateChild, + #[template_child] + pub(super) spinner_revealer: TemplateChild, #[template_child] pub(super) error_page: TemplateChild, @@ -146,6 +150,13 @@ mod imp { glib::spawn_future_local(async move { obj.show_error().await }); } )); + + self.spinner_revealer.connect_map(|revealer| { + let revealer = revealer.clone(); + glib::timeout_add_local_once(Duration::from_millis(200), move || { + revealer.set_reveal_child(true); + }); + }); } } diff --git a/src/widgets/image_page.ui b/src/widgets/image_page.ui index 4bc52f2..8668d5f 100644 --- a/src/widgets/image_page.ui +++ b/src/widgets/image_page.ui @@ -47,7 +47,13 @@ true true - + + false + crossfade + + + +