Simplify slider logic further

This commit is contained in:
Héctor Ramón Jiménez 2024-01-31 21:48:34 +01:00
parent 00716a159a
commit 66f8cf8215
No known key found for this signature in database
GPG key ID: 7CC46565708259A7
2 changed files with 42 additions and 40 deletions

View file

@ -296,12 +296,13 @@ where
} else if cursor_position.x >= bounds.x + bounds.width { } else if cursor_position.x >= bounds.x + bounds.width {
Some(*range.end()) Some(*range.end())
} else { } else {
let step = match step_fine { let step = if state.keyboard_modifiers.shift() {
Some(step_fine) if state.keyboard_modifiers.shift() => { step_fine.unwrap_or(step)
step_fine.into() } else {
} step
_ => step.into(), }
}; .into();
let start = (*range.start()).into(); let start = (*range.start()).into();
let end = (*range.end()).into(); let end = (*range.end()).into();
@ -318,15 +319,15 @@ where
}; };
let increment = |value: T| -> Option<T> { let increment = |value: T| -> Option<T> {
let step = match step_fine { let step = if state.keyboard_modifiers.shift() {
Some(step_fine) if state.keyboard_modifiers.shift() => { step_fine.unwrap_or(step)
step_fine.into() } else {
} step
_ => step.into(), }
}; .into();
let steps = (value.into() / step).round(); 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() { if new_value > (*range.end()).into() {
return Some(*range.end()); return Some(*range.end());
@ -336,15 +337,15 @@ where
}; };
let decrement = |value: T| -> Option<T> { let decrement = |value: T| -> Option<T> {
let step = match step_fine { let step = if state.keyboard_modifiers.shift() {
Some(step_fine) if state.keyboard_modifiers.shift() => { step_fine.unwrap_or(step)
step_fine.into() } else {
} step
_ => step.into(), }
}; .into();
let steps = (value.into() / step).round(); 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() { if new_value < (*range.start()).into() {
return Some(*range.start()); return Some(*range.start());

View file

@ -295,12 +295,13 @@ where
} else if cursor_position.y <= bounds.y { } else if cursor_position.y <= bounds.y {
Some(*range.end()) Some(*range.end())
} else { } else {
let step = match step_fine { let step = if state.keyboard_modifiers.shift() {
Some(step_fine) if state.keyboard_modifiers.shift() => { step_fine.unwrap_or(step)
step_fine.into() } else {
} step
_ => step.into(), }
}; .into();
let start = (*range.start()).into(); let start = (*range.start()).into();
let end = (*range.end()).into(); let end = (*range.end()).into();
@ -318,15 +319,15 @@ where
}; };
let increment = |value: T| -> Option<T> { let increment = |value: T| -> Option<T> {
let step = match step_fine { let step = if state.keyboard_modifiers.shift() {
Some(step_fine) if state.keyboard_modifiers.shift() => { step_fine.unwrap_or(step)
step_fine.into() } else {
} step
_ => step.into(), }
}; .into();
let steps = (value.into() / step).round(); 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() { if new_value > (*range.end()).into() {
return Some(*range.end()); return Some(*range.end());
@ -336,15 +337,15 @@ where
}; };
let decrement = |value: T| -> Option<T> { let decrement = |value: T| -> Option<T> {
let step = match step_fine { let step = if state.keyboard_modifiers.shift() {
Some(step_fine) if state.keyboard_modifiers.shift() => { step_fine.unwrap_or(step)
step_fine.into() } else {
} step
_ => step.into(), }
}; .into();
let steps = (value.into() / step).round(); 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() { if new_value < (*range.start()).into() {
return Some(*range.start()); return Some(*range.start());