Commit 91d1d593 authored by Alexander Mikhaylenko's avatar Alexander Mikhaylenko

paginator: Update position after adding pages

Otherwise it's mixed state until we swipe carousel the first time or press Next.
parent a406830a
...@@ -56,26 +56,32 @@ impl PaginatorWidget { ...@@ -56,26 +56,32 @@ impl PaginatorWidget {
let page_nr = self.pages.borrow().len(); let page_nr = self.pages.borrow().len();
self.carousel.insert(&page.get_widget(), page_nr as i32); self.carousel.insert(&page.get_widget(), page_nr as i32);
self.pages.borrow_mut().push(page); self.pages.borrow_mut().push(page);
}
fn init(&self, p: Rc<Self>) { self.update_position();
self.carousel.set_property_expand(true); }
self.carousel.set_animation_duration(300);
self.carousel.connect_property_position_notify(clone!(@weak p => move |carousel| { fn update_position(&self) {
let n_pages = carousel.get_n_pages() as f64; let n_pages = self.carousel.get_n_pages() as f64;
let position = carousel.get_position(); let position = self.carousel.get_position();
let opacity = (position - n_pages + 2_f64).max(0_f64); let opacity = (position - n_pages + 2_f64).max(0_f64);
p.close_btn.set_opacity(opacity); self.close_btn.set_opacity(opacity);
p.close_btn.set_visible(opacity > 0_f64); self.close_btn.set_visible(opacity > 0_f64);
let page_nr = position.round() as u32; let page_nr = position.round() as u32;
let pages = &p.pages.borrow(); let pages = &self.pages.borrow();
let page = pages.get(page_nr as usize).unwrap(); let page = pages.get(page_nr as usize).unwrap();
p.headerbar.set_title(Some(&page.get_title())); self.headerbar.set_title(Some(&page.get_title()));
p.current_page.replace(page_nr); self.current_page.replace(page_nr);
}
fn init(&self, p: Rc<Self>) {
self.carousel.set_property_expand(true);
self.carousel.set_animation_duration(300);
self.carousel.connect_property_position_notify(clone!(@weak p => move |_| {
p.update_position();
})); }));
let previous_btn = gtk::Button::with_label(&gettext("_Previous")); let previous_btn = gtk::Button::with_label(&gettext("_Previous"));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment