summaryrefslogtreecommitdiffstats
path: root/widget/src
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2024-01-31 21:48:34 +0100
committerLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2024-01-31 21:48:34 +0100
commit66f8cf8215c1bcdf8bf7e5b698b901b49fd87c78 (patch)
tree4983850fb069c48e466c86d75db5118a9c4ad93f /widget/src
parent00716a159a371d070c5fb7d9ed2c660348343a33 (diff)
downloadiced-66f8cf8215c1bcdf8bf7e5b698b901b49fd87c78.tar.gz
iced-66f8cf8215c1bcdf8bf7e5b698b901b49fd87c78.tar.bz2
iced-66f8cf8215c1bcdf8bf7e5b698b901b49fd87c78.zip
Simplify `slider` logic further
Diffstat (limited to 'widget/src')
-rw-r--r--widget/src/slider.rs41
-rw-r--r--widget/src/vertical_slider.rs41
2 files changed, 42 insertions, 40 deletions
diff --git a/widget/src/slider.rs b/widget/src/slider.rs
index 3d1d08ba..ef451d43 100644
--- a/widget/src/slider.rs
+++ b/widget/src/slider.rs
@@ -296,12 +296,13 @@ where
} else if cursor_position.x >= bounds.x + bounds.width {
Some(*range.end())
} else {
- let step = match step_fine {
- Some(step_fine) if state.keyboard_modifiers.shift() => {
- step_fine.into()
- }
- _ => step.into(),
- };
+ let step = if state.keyboard_modifiers.shift() {
+ step_fine.unwrap_or(step)
+ } else {
+ step
+ }
+ .into();
+
let start = (*range.start()).into();
let end = (*range.end()).into();
@@ -318,15 +319,15 @@ where
};
let increment = |value: T| -> Option<T> {
- let step = match step_fine {
- Some(step_fine) if state.keyboard_modifiers.shift() => {
- step_fine.into()
- }
- _ => step.into(),
- };
+ let step = if state.keyboard_modifiers.shift() {
+ step_fine.unwrap_or(step)
+ } else {
+ step
+ }
+ .into();
let steps = (value.into() / step).round();
- let new_value = step * (steps + f64::from(1));
+ let new_value = step * (steps + 1.0);
if new_value > (*range.end()).into() {
return Some(*range.end());
@@ -336,15 +337,15 @@ where
};
let decrement = |value: T| -> Option<T> {
- let step = match step_fine {
- Some(step_fine) if state.keyboard_modifiers.shift() => {
- step_fine.into()
- }
- _ => step.into(),
- };
+ let step = if state.keyboard_modifiers.shift() {
+ step_fine.unwrap_or(step)
+ } else {
+ step
+ }
+ .into();
let steps = (value.into() / step).round();
- let new_value = step * (steps - f64::from(1));
+ let new_value = step * (steps - 1.0);
if new_value < (*range.start()).into() {
return Some(*range.start());
diff --git a/widget/src/vertical_slider.rs b/widget/src/vertical_slider.rs
index 168d7848..9c49d8f5 100644
--- a/widget/src/vertical_slider.rs
+++ b/widget/src/vertical_slider.rs
@@ -295,12 +295,13 @@ where
} else if cursor_position.y <= bounds.y {
Some(*range.end())
} else {
- let step = match step_fine {
- Some(step_fine) if state.keyboard_modifiers.shift() => {
- step_fine.into()
- }
- _ => step.into(),
- };
+ let step = if state.keyboard_modifiers.shift() {
+ step_fine.unwrap_or(step)
+ } else {
+ step
+ }
+ .into();
+
let start = (*range.start()).into();
let end = (*range.end()).into();
@@ -318,15 +319,15 @@ where
};
let increment = |value: T| -> Option<T> {
- let step = match step_fine {
- Some(step_fine) if state.keyboard_modifiers.shift() => {
- step_fine.into()
- }
- _ => step.into(),
- };
+ let step = if state.keyboard_modifiers.shift() {
+ step_fine.unwrap_or(step)
+ } else {
+ step
+ }
+ .into();
let steps = (value.into() / step).round();
- let new_value = step * (steps + f64::from(1));
+ let new_value = step * (steps + 1.0);
if new_value > (*range.end()).into() {
return Some(*range.end());
@@ -336,15 +337,15 @@ where
};
let decrement = |value: T| -> Option<T> {
- let step = match step_fine {
- Some(step_fine) if state.keyboard_modifiers.shift() => {
- step_fine.into()
- }
- _ => step.into(),
- };
+ let step = if state.keyboard_modifiers.shift() {
+ step_fine.unwrap_or(step)
+ } else {
+ step
+ }
+ .into();
let steps = (value.into() / step).round();
- let new_value = step * (steps - f64::from(1));
+ let new_value = step * (steps - 1.0);
if new_value < (*range.start()).into() {
return Some(*range.start());