diff options
author | 2024-01-31 21:48:34 +0100 | |
---|---|---|
committer | 2024-01-31 21:48:34 +0100 | |
commit | 66f8cf8215c1bcdf8bf7e5b698b901b49fd87c78 (patch) | |
tree | 4983850fb069c48e466c86d75db5118a9c4ad93f /widget/src | |
parent | 00716a159a371d070c5fb7d9ed2c660348343a33 (diff) | |
download | iced-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.rs | 41 | ||||
-rw-r--r-- | widget/src/vertical_slider.rs | 41 |
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()); |