mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 02:27:43 +00:00
LibGUI: Add DoClamp option to AbstractSlider::set_value()
This commit is contained in:
parent
ab4c73746c
commit
1d522e4b4c
7 changed files with 17 additions and 11 deletions
|
@ -13,11 +13,11 @@ class AutoSlider final : public GUI::Slider {
|
||||||
public:
|
public:
|
||||||
~AutoSlider() override = default;
|
~AutoSlider() override = default;
|
||||||
Function<void(int)> on_knob_released;
|
Function<void(int)> on_knob_released;
|
||||||
virtual void set_value(int value, GUI::AllowCallback allow_callback = GUI::AllowCallback::Yes) override
|
virtual void set_value(int value, GUI::AllowCallback allow_callback = GUI::AllowCallback::Yes, DoClamp do_clamp = DoClamp::Yes) override
|
||||||
{
|
{
|
||||||
m_in_drag_value = value;
|
m_in_drag_value = value;
|
||||||
if (!knob_dragging() && !mouse_is_down())
|
if (!knob_dragging() && !mouse_is_down())
|
||||||
GUI::Slider::set_value(value, allow_callback);
|
GUI::Slider::set_value(value, allow_callback, do_clamp);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool mouse_is_down() const { return m_mouse_is_down; }
|
bool mouse_is_down() const { return m_mouse_is_down; }
|
||||||
|
|
|
@ -50,9 +50,10 @@ void AbstractSlider::set_range(int min, int max)
|
||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
void AbstractSlider::set_value(int value, AllowCallback allow_callback)
|
void AbstractSlider::set_value(int value, AllowCallback allow_callback, DoClamp do_clamp)
|
||||||
{
|
{
|
||||||
value = clamp(value, m_min, m_max);
|
if (do_clamp == DoClamp::Yes)
|
||||||
|
value = clamp(value, m_min, m_max);
|
||||||
if (m_value == value)
|
if (m_value == value)
|
||||||
return;
|
return;
|
||||||
m_value = value;
|
m_value = value;
|
||||||
|
|
|
@ -30,7 +30,12 @@ public:
|
||||||
bool is_max() const { return m_value == m_max; }
|
bool is_max() const { return m_value == m_max; }
|
||||||
|
|
||||||
void set_range(int min, int max);
|
void set_range(int min, int max);
|
||||||
virtual void set_value(int, AllowCallback = AllowCallback::Yes);
|
|
||||||
|
enum class DoClamp {
|
||||||
|
Yes = 1,
|
||||||
|
No = 0
|
||||||
|
};
|
||||||
|
virtual void set_value(int, AllowCallback = AllowCallback::Yes, DoClamp = DoClamp::Yes);
|
||||||
|
|
||||||
void set_min(int min) { set_range(min, max()); }
|
void set_min(int min) { set_range(min, max()); }
|
||||||
void set_max(int max) { set_range(min(), max); }
|
void set_max(int max) { set_range(min(), max); }
|
||||||
|
|
|
@ -119,13 +119,13 @@ void Scrollbar::set_scroll_animation(Animation scroll_animation)
|
||||||
m_scroll_animation = scroll_animation;
|
m_scroll_animation = scroll_animation;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scrollbar::set_value(int value, AllowCallback allow_callback)
|
void Scrollbar::set_value(int value, AllowCallback allow_callback, DoClamp do_clamp)
|
||||||
{
|
{
|
||||||
m_target_value = value;
|
m_target_value = value;
|
||||||
if (!(m_animated_scrolling_timer.is_null()))
|
if (!(m_animated_scrolling_timer.is_null()))
|
||||||
m_animated_scrolling_timer->stop();
|
m_animated_scrolling_timer->stop();
|
||||||
|
|
||||||
AbstractSlider::set_value(value, allow_callback);
|
AbstractSlider::set_value(value, allow_callback, do_clamp);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scrollbar::set_target_value(int new_target_value)
|
void Scrollbar::set_target_value(int new_target_value)
|
||||||
|
|
|
@ -30,7 +30,7 @@ public:
|
||||||
|
|
||||||
void set_scroll_animation(Animation scroll_animation);
|
void set_scroll_animation(Animation scroll_animation);
|
||||||
|
|
||||||
virtual void set_value(int, AllowCallback = AllowCallback::Yes) override;
|
virtual void set_value(int, AllowCallback = AllowCallback::Yes, DoClamp = DoClamp::Yes) override;
|
||||||
void set_target_value(int);
|
void set_target_value(int);
|
||||||
|
|
||||||
virtual void increase_slider_by(int delta) override { set_target_value(m_target_value + delta); }
|
virtual void increase_slider_by(int delta) override { set_target_value(m_target_value + delta); }
|
||||||
|
|
|
@ -142,9 +142,9 @@ int ValueSlider::value_at(const Gfx::IntPoint& position) const
|
||||||
return (int)(relative_offset * (float)max());
|
return (int)(relative_offset * (float)max());
|
||||||
}
|
}
|
||||||
|
|
||||||
void ValueSlider::set_value(int value, AllowCallback allow_callback)
|
void ValueSlider::set_value(int value, AllowCallback allow_callback, DoClamp do_clamp)
|
||||||
{
|
{
|
||||||
AbstractSlider::set_value(value, allow_callback);
|
AbstractSlider::set_value(value, allow_callback, do_clamp);
|
||||||
m_textbox->set_text(formatted_value());
|
m_textbox->set_text(formatted_value());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -25,7 +25,7 @@ public:
|
||||||
void set_suffix(String suffix) { m_suffix = move(suffix); }
|
void set_suffix(String suffix) { m_suffix = move(suffix); }
|
||||||
void set_knob_style(KnobStyle knobstyle) { m_knob_style = knobstyle; }
|
void set_knob_style(KnobStyle knobstyle) { m_knob_style = knobstyle; }
|
||||||
|
|
||||||
virtual void set_value(int value, AllowCallback = AllowCallback::Yes) override;
|
virtual void set_value(int value, AllowCallback = AllowCallback::Yes, DoClamp = DoClamp::Yes) override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void paint_event(PaintEvent&) override;
|
virtual void paint_event(PaintEvent&) override;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue