Simplify slider logic further
This commit is contained in:
parent
00716a159a
commit
66f8cf8215
2 changed files with 42 additions and 40 deletions
|
|
@ -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());
|
||||||
|
|
|
||||||
|
|
@ -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());
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue