[gnome-tour/wip/exalm/fix] paginator: Update position after adding pages
- From: Alexander Mikhaylenko <alexm src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-tour/wip/exalm/fix] paginator: Update position after adding pages
- Date: Mon, 13 Jul 2020 23:31:01 +0000 (UTC)
commit 91d1d5934da553a6f91647e39647313313b180ae
Author: Alexander Mikhaylenko <alexm gnome org>
Date: Tue Jul 14 04:30:11 2020 +0500
paginator: Update position after adding pages
Otherwise it's mixed state until we swipe carousel the first time or
press Next.
src/widgets/paginator.rs | 34 ++++++++++++++++++++--------------
1 file changed, 20 insertions(+), 14 deletions(-)
---
diff --git a/src/widgets/paginator.rs b/src/widgets/paginator.rs
index e957742..fc9571a 100644
--- a/src/widgets/paginator.rs
+++ b/src/widgets/paginator.rs
@@ -56,26 +56,32 @@ impl PaginatorWidget {
let page_nr = self.pages.borrow().len();
self.carousel.insert(&page.get_widget(), page_nr as i32);
self.pages.borrow_mut().push(page);
+
+ self.update_position();
}
- fn init(&self, p: Rc<Self>) {
- self.carousel.set_property_expand(true);
- self.carousel.set_animation_duration(300);
+ fn update_position(&self) {
+ let n_pages = self.carousel.get_n_pages() as f64;
+ let position = self.carousel.get_position();
+ let opacity = (position - n_pages + 2_f64).max(0_f64);
- self.carousel.connect_property_position_notify(clone!(@weak p => move |carousel| {
- let n_pages = carousel.get_n_pages() as f64;
- let position = carousel.get_position();
- let opacity = (position - n_pages + 2_f64).max(0_f64);
+ self.close_btn.set_opacity(opacity);
+ self.close_btn.set_visible(opacity > 0_f64);
- p.close_btn.set_opacity(opacity);
- p.close_btn.set_visible(opacity > 0_f64);
+ let page_nr = position.round() as u32;
+ let pages = &self.pages.borrow();
+ let page = pages.get(page_nr as usize).unwrap();
- let page_nr = position.round() as u32;
- let pages = &p.pages.borrow();
- let page = pages.get(page_nr as usize).unwrap();
+ self.headerbar.set_title(Some(&page.get_title()));
+ self.current_page.replace(page_nr);
+ }
+
+ fn init(&self, p: Rc<Self>) {
+ self.carousel.set_property_expand(true);
+ self.carousel.set_animation_duration(300);
- p.headerbar.set_title(Some(&page.get_title()));
- p.current_page.replace(page_nr);
+ self.carousel.connect_property_position_notify(clone!(@weak p => move |_| {
+ p.update_position();
}));
let previous_btn = gtk::Button::with_label(&gettext("_Previous"));
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]