Commit de28ab3a authored by Bilal Elmoussaoui's avatar Bilal Elmoussaoui

Merge branch 'update_position' into 'master'

Refactor `update_position` See merge request GNOME/gnome-tour!26
parents c1ae5c1a 0eafe2c5
...@@ -64,16 +64,22 @@ impl PaginatorWidget { ...@@ -64,16 +64,22 @@ impl PaginatorWidget {
} }
fn update_position(&self) { fn update_position(&self) {
let n_pages = self.carousel.get_n_pages() as f64;
let position = self.carousel.get_position(); let position = self.carousel.get_position();
let page_nr = position.round() as u32; let page_nr = position.round() as u32;
let opacity_close = (position - n_pages + 2_f64).max(0_f64); let n_pages = self.carousel.get_n_pages() as f64;
let opacity_previous = if position <= 1_f64 { position } else { 1_f64 }; let forelast_page = n_pages - 2.0;
let opacity_next = if position <= 1_f64 && position <= n_pages { let last_page = n_pages - 1.0;
position % n_pages
let (opacity_close, opacity_previous, opacity_next) =
if (0.0 <= position) && (position < 1.0) {
(0.0, position, position)
} else if (1.0 <= position) && (position <= forelast_page) {
(0.0, 1.0, 1.0)
} else if (forelast_page < position) && (position <= last_page) {
(position - forelast_page, 1.0, 1.0)
} else { } else {
1_f64 panic!("Position of the carousel is outside the allowed range");
}; };
self.close_btn.set_opacity(opacity_close); self.close_btn.set_opacity(opacity_close);
......
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