[gnome-tour: 1/2] Refactor `update_position`
- From: Bilal Elmoussaoui <bilelmoussaoui src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-tour: 1/2] Refactor `update_position`
- Date: Mon, 5 Oct 2020 17:13:49 +0000 (UTC)
commit 0eafe2c5a63d0655a9410a6a34a88cd0711cc65f
Author: Julian Hofer <julianhofer gnome org>
Date: Mon Oct 5 18:47:18 2020 +0200
Refactor `update_position`
The original implementation to determine the button opacity was clever,
but not easy to understand. The new implementation is more verbose,
but hopefully easier to get.
src/widgets/paginator.rs | 22 ++++++++++++++--------
1 file changed, 14 insertions(+), 8 deletions(-)
---
diff --git a/src/widgets/paginator.rs b/src/widgets/paginator.rs
index 026bdab..b0de46b 100644
--- a/src/widgets/paginator.rs
+++ b/src/widgets/paginator.rs
@@ -64,17 +64,23 @@ impl PaginatorWidget {
}
fn update_position(&self) {
- let n_pages = self.carousel.get_n_pages() as f64;
let position = self.carousel.get_position();
let page_nr = position.round() as u32;
- let opacity_close = (position - n_pages + 2_f64).max(0_f64);
- let opacity_previous = if position <= 1_f64 { position } else { 1_f64 };
- let opacity_next = if position <= 1_f64 && position <= n_pages {
- position % n_pages
- } else {
- 1_f64
- };
+ let n_pages = self.carousel.get_n_pages() as f64;
+ let forelast_page = n_pages - 2.0;
+ let last_page = n_pages - 1.0;
+
+ 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 {
+ panic!("Position of the carousel is outside the allowed range");
+ };
self.close_btn.set_opacity(opacity_close);
self.close_btn.set_visible(opacity_close > 0_f64);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]