mirror of
https://github.com/SerenityOS/serenity
synced 2024-10-16 21:04:20 +00:00
LibGUI: Fix {Value,Opacity}Slider value changes for values less than 0
This patch fixes a value glitch when changing the slider value via dragging the knob with the mouse and having a min value smaller than 0. Before this patch it was not possible to drag the value below 0 and it just snapped to the configured min value if the mouse was at the most left position. Now the value is calculated from the value range and mouse position within the widget.
This commit is contained in:
parent
ee6fb51db6
commit
f9ec3b986e
|
@ -103,7 +103,9 @@ int OpacitySlider::value_at(Gfx::IntPoint const& position) const
|
|||
if (position.x() > inner_rect.right())
|
||||
return max();
|
||||
float relative_offset = (float)(position.x() - inner_rect.x()) / (float)inner_rect.width();
|
||||
return relative_offset * (float)max();
|
||||
|
||||
int range = max() - min();
|
||||
return min() + (int)(relative_offset * (float)range);
|
||||
}
|
||||
|
||||
void OpacitySlider::mousedown_event(MouseEvent& event)
|
||||
|
|
|
@ -139,7 +139,9 @@ int ValueSlider::value_at(Gfx::IntPoint const& position) const
|
|||
if (position.x() > bar_rect().right())
|
||||
return max();
|
||||
float relative_offset = (float)(position.x() - bar_rect().left()) / (float)bar_rect().width();
|
||||
return (int)(relative_offset * (float)max());
|
||||
|
||||
int range = max() - min();
|
||||
return min() + (int)(relative_offset * (float)range);
|
||||
}
|
||||
|
||||
void ValueSlider::set_value(int value, AllowCallback allow_callback, DoClamp do_clamp)
|
||||
|
|
Loading…
Reference in a new issue