diff options
author | Itamar <itamar8910@gmail.com> | 2022-03-29 16:01:59 +0300 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2022-03-29 17:45:36 +0200 |
commit | 1d522e4b4ce27e1fe5ad42fc9f2538e0212442dd (patch) | |
tree | 7dbc7c5ea8c6187504de678ba76b6c4d64bc1259 | |
parent | ab4c73746c4ebe063e3d6a1533d97908b102dd35 (diff) | |
download | serenity-1d522e4b4ce27e1fe5ad42fc9f2538e0212442dd.zip |
LibGUI: Add DoClamp option to AbstractSlider::set_value()
-rw-r--r-- | Userland/Applications/SoundPlayer/Common.h | 4 | ||||
-rw-r--r-- | Userland/Libraries/LibGUI/AbstractSlider.cpp | 5 | ||||
-rw-r--r-- | Userland/Libraries/LibGUI/AbstractSlider.h | 7 | ||||
-rw-r--r-- | Userland/Libraries/LibGUI/Scrollbar.cpp | 4 | ||||
-rw-r--r-- | Userland/Libraries/LibGUI/Scrollbar.h | 2 | ||||
-rw-r--r-- | Userland/Libraries/LibGUI/ValueSlider.cpp | 4 | ||||
-rw-r--r-- | Userland/Libraries/LibGUI/ValueSlider.h | 2 |
7 files changed, 17 insertions, 11 deletions
diff --git a/Userland/Applications/SoundPlayer/Common.h b/Userland/Applications/SoundPlayer/Common.h index 203aecf56b..06c5309e2b 100644 --- a/Userland/Applications/SoundPlayer/Common.h +++ b/Userland/Applications/SoundPlayer/Common.h @@ -13,11 +13,11 @@ class AutoSlider final : public GUI::Slider { public: ~AutoSlider() override = default; 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; 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; } diff --git a/Userland/Libraries/LibGUI/AbstractSlider.cpp b/Userland/Libraries/LibGUI/AbstractSlider.cpp index 9759df20fe..4f1442a0da 100644 --- a/Userland/Libraries/LibGUI/AbstractSlider.cpp +++ b/Userland/Libraries/LibGUI/AbstractSlider.cpp @@ -50,9 +50,10 @@ void AbstractSlider::set_range(int min, int max) 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) return; m_value = value; diff --git a/Userland/Libraries/LibGUI/AbstractSlider.h b/Userland/Libraries/LibGUI/AbstractSlider.h index 83c29254d8..87103e332b 100644 --- a/Userland/Libraries/LibGUI/AbstractSlider.h +++ b/Userland/Libraries/LibGUI/AbstractSlider.h @@ -30,7 +30,12 @@ public: bool is_max() const { return m_value == m_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_max(int max) { set_range(min(), max); } diff --git a/Userland/Libraries/LibGUI/Scrollbar.cpp b/Userland/Libraries/LibGUI/Scrollbar.cpp index 59366fa099..ebb0499cb0 100644 --- a/Userland/Libraries/LibGUI/Scrollbar.cpp +++ b/Userland/Libraries/LibGUI/Scrollbar.cpp @@ -119,13 +119,13 @@ void Scrollbar::set_scroll_animation(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; if (!(m_animated_scrolling_timer.is_null())) 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) diff --git a/Userland/Libraries/LibGUI/Scrollbar.h b/Userland/Libraries/LibGUI/Scrollbar.h index e5b99185e7..0f6115055c 100644 --- a/Userland/Libraries/LibGUI/Scrollbar.h +++ b/Userland/Libraries/LibGUI/Scrollbar.h @@ -30,7 +30,7 @@ public: 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); virtual void increase_slider_by(int delta) override { set_target_value(m_target_value + delta); } diff --git a/Userland/Libraries/LibGUI/ValueSlider.cpp b/Userland/Libraries/LibGUI/ValueSlider.cpp index b7995fd0f8..6034361e07 100644 --- a/Userland/Libraries/LibGUI/ValueSlider.cpp +++ b/Userland/Libraries/LibGUI/ValueSlider.cpp @@ -142,9 +142,9 @@ int ValueSlider::value_at(const Gfx::IntPoint& position) const 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()); } diff --git a/Userland/Libraries/LibGUI/ValueSlider.h b/Userland/Libraries/LibGUI/ValueSlider.h index 546917fbdd..91aba6ab19 100644 --- a/Userland/Libraries/LibGUI/ValueSlider.h +++ b/Userland/Libraries/LibGUI/ValueSlider.h @@ -25,7 +25,7 @@ public: void set_suffix(String suffix) { m_suffix = move(suffix); } 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: virtual void paint_event(PaintEvent&) override; |